64 lines
1.9 KiB
C#
64 lines
1.9 KiB
C#
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<List<Recipe>> ReadRecipes(int userId)
|
|
{
|
|
var recipes = await _context.Users.Include(p => p.Recipes).FirstOrDefaultAsync(u => u.Id == userId);
|
|
|
|
return recipes.Recipes;
|
|
}
|
|
|
|
public async Task<Recipe> ReadRecipe(int recipeId)
|
|
{
|
|
return await _context.Recipes.Include(r => r.Ingredients).FirstOrDefaultAsync(r => r.Id == recipeId);
|
|
}
|
|
|
|
public async Task<IActionResult> 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<IActionResult> 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<IActionResult> 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" });
|
|
}
|
|
}
|
|
}
|