using API.Models.RecipeModels; using API.Models.UserModels; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace API.DBAccess { public class RecipeDBaccess { private readonly DBContext _context; public RecipeDBaccess(DBContext context) { _context = context; } public async Task ReadPrefereredRecipes(int userId) { var recipes = await _context.Users.Include(u => u.PrefereredRecipes).ThenInclude(p => p.Recipes).FirstOrDefaultAsync(u => u.Id == userId); return recipes.PrefereredRecipes; } public async Task ReadAllRecipe(int prefereredRecipesId) { return await _context.PrefereredRecipes.Include(p => p.Recipes).FirstOrDefaultAsync(r => r.Id == prefereredRecipesId); } public async Task ReadRecipe(int recipeId) { return await _context.Recipes.Include(r => r.Ingredients).FirstOrDefaultAsync(r => r.Id == recipeId); } public async Task CreateMissingLists(int userId) { var user = await _context.Users.FirstOrDefaultAsync(u => u.Id == userId); user.PrefereredRecipes = new PrefereredRecipes(); user.PrefereredRecipes.Recipes = new List(); _context.SaveChangesAsync(); return await ReadPrefereredRecipes(userId); } public async Task CreateRecipe(Recipe recipe, int prefereredRecipeId) { var recipes = await _context.PrefereredRecipes.Include(p => p.Recipes).FirstOrDefaultAsync(p => p.Id == prefereredRecipeId); recipes.Recipes.Add(recipe); bool saved = await _context.SaveChangesAsync() > 1; if (saved) { return new OkObjectResult(saved); } return new ConflictObjectResult(new { message = "Could not save to database" }); } public async Task UpdateRecipe(Recipe recipe) { _context.Entry(recipe).State = EntityState.Modified; bool saved = await _context.SaveChangesAsync() >= 1; if (saved) { return new OkObjectResult(recipe); } return new ConflictObjectResult(new { message = "Could not save to database" }); } public async Task DeleteUser(Recipe recipe) { _context.Recipes.Remove(recipe); bool saved = await _context.SaveChangesAsync() >= 0; if (saved) { return new OkObjectResult(saved); } return new ConflictObjectResult(new { message = "Could not save to database" }); } } }