using API.DBAccess; using API.Models.RecipeModels; using Microsoft.AspNetCore.Mvc; namespace API.BusinessLogic { public class RecipeLogic { private readonly RecipeDBaccess _dbAccess; private readonly IConfiguration _configuration; public RecipeLogic(IConfiguration configuration, RecipeDBaccess dbAccess) { _dbAccess = dbAccess; _configuration = configuration; } public async Task GetPrefereredRecipes(int userId) { PrefereredRecipes recipes = await _dbAccess.ReadPrefereredRecipes(userId); if (recipes == null) { recipes = await _dbAccess.CreateMissingLists(userId); } if (recipes == null || recipes.Id == 0) { return new ConflictObjectResult(new { message = "Could not find any recipes" }); } return new OkObjectResult(recipes); } public async Task GetRecipe(int recipeId) { var recipe = await _dbAccess.ReadRecipe(recipeId); if (recipe == null || recipe.Id == 0) { return new ConflictObjectResult(new { message = "Could not find any recipe" }); } return new OkObjectResult(recipe); } public async Task CreateRecipe(Recipe recipe, int prefereredRecipesId) { var prefereredRecipes = await _dbAccess.ReadAllRecipe(prefereredRecipesId); foreach (var item in prefereredRecipes.Recipes) { if (item.Name == recipe.Name) { return new ConflictObjectResult(new { message = "Recipe name is already in use." }); } } return await _dbAccess.CreateRecipe(recipe, prefereredRecipesId); } public async Task EditRecipe(Recipe recipe, int recipeId, int userId) { var prefereredRecipes = await _dbAccess.ReadPrefereredRecipes(userId); var dish = await _dbAccess.ReadRecipe(recipeId); foreach (var item in prefereredRecipes.Recipes) { if (item.Name == recipe.Name) { return new ConflictObjectResult(new { message = "Recipe name is already in use." }); } } dish.Name = recipe.Name; dish.Description = recipe.Description; dish.Directions = recipe.Directions; dish.Ingredients = recipe.Ingredients; return await _dbAccess.UpdateRecipe(dish); } public async Task DeleteRecipe(int recipeId) { var recipe = await _dbAccess.ReadRecipe(recipeId); if (recipe != null) { return await _dbAccess.DeleteUser(recipe); } return new ConflictObjectResult(new { message = "Invalid user" }); } } }