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> ReadRecipes(int userId) { var recipes = await _context.Users.Include(p => p.Recipes).FirstOrDefaultAsync(u => u.Id == userId); return recipes.Recipes; } public async Task ReadRecipe(int recipeId) { return await _context.Recipes.Include(r => r.Ingredients).Include(r => r.Directions).FirstOrDefaultAsync(r => r.Id == recipeId); } public async Task CreateRecipe(Recipe recipe, int userId) { var recipes = await _context.Users.Include(p => p.Recipes).FirstOrDefaultAsync(u => u.Id == userId); 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 DeleteRecipe(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" }); } } }