You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
4.1 KiB
85 lines
4.1 KiB
using LocalEndpoint;
|
|
using Models;
|
|
using System.Collections.Immutable;
|
|
|
|
namespace Endpoint
|
|
{
|
|
internal class AccountRecipes : IAccountRecipes
|
|
{
|
|
|
|
public Account Account { get; init; }
|
|
|
|
private readonly Dictionary<Guid, Recipe> ownedRecipes = new Dictionary<Guid, Recipe>();
|
|
private readonly Dictionary<Guid, AccountRecipeRate> ratedRecipes = new Dictionary<Guid, AccountRecipeRate>();
|
|
|
|
public AccountRecipes(Account account)
|
|
{
|
|
Account = account;
|
|
}
|
|
|
|
public bool UploadRecipe(Recipe recipe)
|
|
{
|
|
Guid id = recipe.Info.Id;
|
|
if (ownedRecipes.ContainsKey(id))
|
|
{
|
|
return false;
|
|
}
|
|
ownedRecipes.Add(id, recipe);
|
|
return true;
|
|
}
|
|
|
|
public bool RemoveRecipe(RecipeInfo info)
|
|
{
|
|
return ownedRecipes.Remove(info.Id);
|
|
}
|
|
|
|
public ImmutableList<RecipeInfo> GetAccountRecipes()
|
|
{
|
|
return ownedRecipes.Values.ToImmutableList().ConvertAll(r => r.Info);
|
|
}
|
|
|
|
|
|
public ImmutableList<RecipeInfo> GetRecommendedRecipes()
|
|
{
|
|
return new List<RecipeInfo> {
|
|
new RecipeInfo("Chicken Salad", 500, 20, new Uri("https://healthyfitnessmeals.com/wp-content/uploads/2021/04/Southwest-chicken-salad-7-500x500.jpg"), 4, new Guid()),
|
|
new RecipeInfo("Chocolate Cake", 2500, 10, new Uri("https://bakewithshivesh.com/wp-content/uploads/2022/08/IMG_0248-scaled.jpg"), 3, new Guid()),
|
|
new RecipeInfo("Salmon", 20, 10, new Uri("https://www.wholesomeyum.com/wp-content/uploads/2021/06/wholesomeyum-Pan-Seared-Salmon-Recipe-13.jpg"), 4, new Guid()),
|
|
new RecipeInfo("Fish", 50, 30, new Uri("https://www.ciaanet.org/wp-content/uploads/2022/07/Atlantic-and-Pacific-whole-salmon-1024x683.jpg"), 4.5F, new Guid()),
|
|
new RecipeInfo("Space Cake", 800, 5, new Uri("https://static.youmiam.com/images/recipe/1500x1000/space-cake-22706?placeholder=web_recipe&sig=f14a7a86da837c6b8cc678cde424d6d5902f99ec&v3"), 5, new Guid())
|
|
}.ToImmutableList();
|
|
}
|
|
|
|
public ImmutableList<RecipeInfo> GetFavorites()
|
|
{
|
|
return new List<RecipeInfo> {
|
|
new RecipeInfo("Chicken Salad", 500, 20, new Uri("https://healthyfitnessmeals.com/wp-content/uploads/2021/04/Southwest-chicken-salad-7-500x500.jpg"), 4, new Guid()),
|
|
new RecipeInfo("Space Cake", 800, 5, new Uri("https://static.youmiam.com/images/recipe/1500x1000/space-cake-22706?placeholder=web_recipe&sig=f14a7a86da837c6b8cc678cde424d6d5902f99ec&v3"), 5, new Guid()),
|
|
new RecipeInfo("Fish And Ships", 450, 15, new Uri("https://upload.wikimedia.org/wikipedia/commons/f/ff/Fish_and_chips_blackpool.jpg"), 4, new Guid()),
|
|
new RecipeInfo("Caesar Salad", 150, 20, new Uri("https://www.galbani.fr/wp-content/uploads/2020/04/AdobeStock_157570276-2.jpeg"), 1, new Guid())
|
|
}.ToImmutableList();
|
|
}
|
|
|
|
public ImmutableList<(RecipeInfo, uint)> GetWeeklyList()
|
|
{
|
|
return new List<(RecipeInfo, uint)> {
|
|
(new RecipeInfo("Space Cake", 800, 5, new Uri("https://static.youmiam.com/images/recipe/1500x1000/space-cake-22706?placeholder=web_recipe&sig=f14a7a86da837c6b8cc678cde424d6d5902f99ec&v3"), 5, new Guid()), 4),
|
|
(new RecipeInfo("Chicken Curry", 500, 45, new Uri("https://cdn.chefclub.tools/uploads/recipes/cover-thumbnail/f287b191-dc8e-4c85-bbb6-e26387c354d3.jpg"), 3, new Guid()), 4),
|
|
(new RecipeInfo("Spaghetti Bolognese", 1000, 30, new Uri("https://media.istockphoto.com/id/1144823591/fr/photo/spaghetti-dans-un-plat-sur-un-fond-blanc.jpg?s=612x612&w=0&k=20&c=qFzd8iE185mpsX7hWqYaieOWlzJVCkzFdYsxmwUT3-Q="), 1, new Guid()), 1),
|
|
}.ToImmutableList();
|
|
}
|
|
|
|
public void SetRate(RecipeInfo info, AccountRecipeRate rate)
|
|
{
|
|
ratedRecipes.Add(info.Id, rate);
|
|
}
|
|
|
|
public AccountRecipeRate? FindRate(RecipeInfo info)
|
|
{
|
|
AccountRecipeRate? rate = null;
|
|
ratedRecipes.TryGetValue(info.Id, out rate);
|
|
return rate;
|
|
}
|
|
}
|
|
}
|