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.
65 lines
4.2 KiB
65 lines
4.2 KiB
using Endpoint;
|
|
using LocalEndpoint.Data;
|
|
using Models;
|
|
using System.Collections.Immutable;
|
|
|
|
namespace LocalEndpoint
|
|
{
|
|
|
|
/// <summary>
|
|
/// The local endpoint is an implementation of the Endpoint API definition.
|
|
///
|
|
/// </summary>
|
|
public class LocalEndpoint : IEndpoint
|
|
{
|
|
private readonly IAuthService authService;
|
|
private readonly IRecipesService recipesService;
|
|
|
|
|
|
public LocalEndpoint()
|
|
{
|
|
var db = new CatastrophicPerformancesDatabase(Environment.GetFolderPath(Environment.SpecialFolder.Personal));
|
|
|
|
if (db.IsEmpty())
|
|
PrepareDatabase(db);
|
|
|
|
recipesService = new RecipesService(db);
|
|
authService = new AuthService(db);
|
|
}
|
|
|
|
public IAuthService AccountManager => authService;
|
|
|
|
public IRecipesService RecipesService => recipesService;
|
|
|
|
private static void PrepareDatabase(Database db)
|
|
{
|
|
User USER1 = new User(new Uri("https://i.ibb.co/L6t6bGR/DALL-E-2023-05-10-20-27-31-cook-looking-at-the-camera-with-a-chef-s-hat-laughing-in-an-exaggerated-w.png"), "The Funny Chief", MakeGuid(1));
|
|
User USER2 = new User(Constants.DEFAULT_ACCOUNT_IMAGE, "Yanis", MakeGuid(2));
|
|
User USER3 = new User(Constants.DEFAULT_ACCOUNT_IMAGE, "Leo", MakeGuid(3));
|
|
|
|
db.InsertUser(USER1);
|
|
db.InsertUser(USER2);
|
|
db.InsertUser(USER3);
|
|
|
|
db.InsertAccount(new Account(USER1, "chief@cook.com"), "123456");
|
|
db.InsertAccount(new Account(USER2, "yanis@google.com"), "123456");
|
|
db.InsertAccount(new Account(USER3, "leo@google.com"), "123456");
|
|
|
|
db.InsertRecipe(new Recipe(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()), USER1, new List<Ingredient> { new Ingredient("Ingredient 1", 6) }.ToImmutableList(), new List<PreparationStep> { new PreparationStep("Step 1", "Bake the eggs") }.ToImmutableList()));
|
|
db.InsertRecipe(new Recipe(new RecipeInfo("Chocolate Cake", 2500, 10, new Uri("https://bakewithshivesh.com/wp-content/uploads/2022/08/IMG_0248-scaled.jpg"), 3, Guid.NewGuid()), USER2, new List<Ingredient> { new Ingredient("Ingredient 1", 6) }.ToImmutableList(), new List<PreparationStep> { new PreparationStep("Step 1", "Bake the eggs") }.ToImmutableList()));
|
|
db.InsertRecipe(new Recipe(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()), USER1, new List<Ingredient> { new Ingredient("Ingredient 1", 6) }.ToImmutableList(), new List<PreparationStep> { new PreparationStep("Step 1", "Bake the eggs") }.ToImmutableList()));
|
|
db.InsertRecipe(new Recipe(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()), USER3, new List<Ingredient> { new Ingredient("Ingredient 1", 6) }.ToImmutableList(), new List<PreparationStep> { new PreparationStep("Step 1", "Bake the eggs") }.ToImmutableList()));
|
|
db.InsertRecipe(new Recipe(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()), USER3, new List<Ingredient> { new Ingredient("Ingredient 1", 6) }.ToImmutableList(), new List<PreparationStep> { new PreparationStep("Step 1", "Bake the eggs") }.ToImmutableList()));
|
|
db.InsertRecipe(new Recipe(new RecipeInfo("Cupcake", 500, 12, new Uri("https://www.mycake.fr/wp-content/uploads/2015/12/rs_cupcake_4x3.jpg"), 4.2F, Guid.NewGuid()), USER1, new List<Ingredient> { new Ingredient("Chocolate", 4) }.ToImmutableList(), new List<PreparationStep> { new PreparationStep("Eat Chocolate", "Eat the chocolate") }.ToImmutableList()));
|
|
}
|
|
|
|
private static Guid MakeGuid(int seed)
|
|
{
|
|
var r = new Random(seed);
|
|
var guid = new byte[16];
|
|
r.NextBytes(guid);
|
|
|
|
return new Guid(guid);
|
|
}
|
|
}
|
|
} |