using LocalEndpoint; using Models; using System.Collections.Immutable; namespace Endpoint { internal class AccountRecipes : IAccountRecipes { public Account Account { get; init; } private readonly Dictionary ownedRecipes = new Dictionary(); private readonly Dictionary ratedRecipes = new Dictionary(); 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 GetAccountRecipes() { return ownedRecipes.Values.ToImmutableList().ConvertAll(r => r.Info); } public ImmutableList GetRecommendedRecipes() { return new List { new RecipeInfo("Chicken Salad", 500, 20, new Uri("https://healthyfitnessmeals.com/wp-content/uploads/2021/04/Southwest-chicken-salad-7-500x500.jpg"), 4, Guid.NewGuid()), new RecipeInfo("Chocolate Cake", 2500, 10, new Uri("https://bakewithshivesh.com/wp-content/uploads/2022/08/IMG_0248-scaled.jpg"), 3, Guid.NewGuid()), new RecipeInfo("Salmon", 20, 10, new Uri("https://www.wholesomeyum.com/wp-content/uploads/2021/06/wholesomeyum-Pan-Seared-Salmon-Recipe-13.jpg"), 4, Guid.NewGuid()), 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, Guid.NewGuid()), 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, Guid.NewGuid()) }.ToImmutableList(); } public ImmutableList GetFavorites() { return new List { new RecipeInfo("Chicken Salad", 500, 20, new Uri("https://healthyfitnessmeals.com/wp-content/uploads/2021/04/Southwest-chicken-salad-7-500x500.jpg"), 4, Guid.NewGuid()), 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, Guid.NewGuid()), new RecipeInfo("Fish And Ships", 450, 15, new Uri("https://upload.wikimedia.org/wikipedia/commons/f/ff/Fish_and_chips_blackpool.jpg"), 4, Guid.NewGuid()), new RecipeInfo("Caesar Salad", 150, 20, new Uri("https://www.galbani.fr/wp-content/uploads/2020/04/AdobeStock_157570276-2.jpeg"), 1, Guid.NewGuid()) }.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, Guid.NewGuid()), 4), (new RecipeInfo("Chicken Curry", 500, 45, new Uri("https://cdn.chefclub.tools/uploads/recipes/cover-thumbnail/f287b191-dc8e-4c85-bbb6-e26387c354d3.jpg"), 3, Guid.NewGuid()), 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, Guid.NewGuid()), 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; } } }