diff --git a/Francesco.Recipes.World/Repositories/Favorit/FavoritRepository.cs b/Francesco.Recipes.World/Repositories/Favorit/FavoritRepository.cs new file mode 100644 index 0000000..b4eddb5 --- /dev/null +++ b/Francesco.Recipes.World/Repositories/Favorit/FavoritRepository.cs @@ -0,0 +1,49 @@ +namespace Francesco.Recipes.World.Repositories.Favorit +{ + using Francesco.Recipes.World.Data; + using Francesco.Recipes.World.Models.BackendModels.Recipe; + using Microsoft.EntityFrameworkCore; + + public class FavoritRepository : IFavoritRepository + { + private readonly FrancescosRecipesWorldDbContext _context; + + public FavoritRepository(FrancescosRecipesWorldDbContext context) + { + _context = context; + } + + public async Task> GetFavoriteRecipesAsync() + { + return await _context.Recipes + .Where(r => r.IsFavorite) + .ToListAsync(); + } + + public async Task IsFavoriteAsync(Guid recipeId) + { + return await _context.Recipes + .AnyAsync(r => r.Id == recipeId && r.IsFavorite); + } + + public async Task AddFavoriteAsync(Guid recipeId) + { + var recipe = await _context.Recipes.FindAsync(recipeId); + if (recipe != null && !recipe.IsFavorite) + { + recipe.IsFavorite = true; + await _context.SaveChangesAsync(); + } + } + + public async Task RemoveFavoriteAsync(Guid recipeId) + { + var recipe = await _context.Recipes.FindAsync(recipeId); + if (recipe != null && recipe.IsFavorite) + { + recipe.IsFavorite = false; + await _context.SaveChangesAsync(); + } + } + } +} diff --git a/Francesco.Recipes.World/Repositories/Favorit/IFavoritRepository.cs b/Francesco.Recipes.World/Repositories/Favorit/IFavoritRepository.cs new file mode 100644 index 0000000..8f47e0a --- /dev/null +++ b/Francesco.Recipes.World/Repositories/Favorit/IFavoritRepository.cs @@ -0,0 +1,15 @@ +namespace Francesco.Recipes.World.Repositories.Favorit +{ + using Francesco.Recipes.World.Models.BackendModels.Recipe; + + public interface IFavoritRepository + { + Task> GetFavoriteRecipesAsync(); + + Task IsFavoriteAsync(Guid recipeId); + + Task AddFavoriteAsync(Guid recipeId); + + Task RemoveFavoriteAsync(Guid recipeId); + } +}