diff --git a/Francesco.Recipes.World/Repositories/Recipe/IRecipeRepository.cs b/Francesco.Recipes.World/Repositories/Recipe/IRecipeRepository.cs index bc6ae01..c5d46a0 100644 --- a/Francesco.Recipes.World/Repositories/Recipe/IRecipeRepository.cs +++ b/Francesco.Recipes.World/Repositories/Recipe/IRecipeRepository.cs @@ -2,12 +2,13 @@ { using Francesco.Recipes.World.Models.BackendModels.Category; using Francesco.Recipes.World.Models.BackendModels.Recipe; - using Francesco.Recipes.World.Models.BackendModels.Unit; public interface IRecipeRepository { Task GetRecipeAsync(Guid recipeId); + Task GetRecipeByIdAsync(Guid id); + Task AddOrCreateIngredientToRecipeAsync(Guid recipeId, string ingredientName, int quantity, Guid unitId); Task RemoveIngredientFromRecipeAsync(Guid recipeId, Guid ingredientId); @@ -16,8 +17,6 @@ Task> GetRecipesByDifficultyAsync(Difficulty? difficulty); - Task AddUnitToRecipeAsync(string name, string symbol); - Task CreateRecipeForCategoryAsync(Category category, string name, string description, Difficulty difficulty, int servings, TimeSpan preparationTime, TimeSpan cookingTime); } } diff --git a/Francesco.Recipes.World/Repositories/Recipe/RecipeRepository.cs b/Francesco.Recipes.World/Repositories/Recipe/RecipeRepository.cs index 7b2c780..ae33b43 100644 --- a/Francesco.Recipes.World/Repositories/Recipe/RecipeRepository.cs +++ b/Francesco.Recipes.World/Repositories/Recipe/RecipeRepository.cs @@ -5,7 +5,6 @@ using Francesco.Recipes.World.Models.BackendModels.Ingredient; using Francesco.Recipes.World.Models.BackendModels.Recipe; using Francesco.Recipes.World.Models.BackendModels.RecipeIngredient; - using Francesco.Recipes.World.Models.BackendModels.Unit; using Francesco.Recipes.World.Repositories.Ingredient; using Francesco.Recipes.World.Repositories.Unit; using Microsoft.EntityFrameworkCore; @@ -30,6 +29,17 @@ return recipe ?? throw new InvalidDataException($"Address {recipeId} not found."); } + public async Task GetRecipeByIdAsync(Guid recipeId) + { + return await _context.Recipes + .Include(r => r.RecipeIngredients) + .ThenInclude(ri => ri.Ingredient) + .Include(r => r.RecipeIngredients) + .ThenInclude(ri => ri.Unit) + .Include(r => r.MediaFiles) + .FirstOrDefaultAsync(r => r.Id == recipeId); + } + public async Task AddOrCreateIngredientToRecipeAsync(Guid recipeId, string ingredientName, int quantity, Guid unitId) { var recipe = await GetRecipeAsync(recipeId); @@ -77,13 +87,13 @@ } public async Task CreateRecipeForCategoryAsync( - Category category, - string name, - string description, - Difficulty difficulty, - int servings, - TimeSpan preparationTime, - TimeSpan cookingTime) + Category category, + string name, + string description, + Difficulty difficulty, + int servings, + TimeSpan preparationTime, + TimeSpan cookingTime) { if (category == null) { @@ -162,14 +172,21 @@ public async Task> GetRecipesByDifficultyAsync(Difficulty? difficulty) { - return await _context.Recipes - .Where(r => r.Difficulty == difficulty) - .ToListAsync(); - } + if (!difficulty.HasValue) + { + return await _context.Recipes + .Include(r => r.Category) + .Include(r => r.RecipeIngredients) + .ThenInclude(ri => ri.Ingredient) + .ToListAsync(); + } - public async Task AddUnitToRecipeAsync(string name, string symbol) - { - return await _unitRepository.AddUnitAsync(name, symbol); + return await _context.Recipes + .Where(r => r.Difficulty == difficulty.Value) + .Include(r => r.Category) + .Include(r => r.RecipeIngredients) + .ThenInclude(ri => ri.Ingredient) + .ToListAsync(); } } }