diff --git a/Francesco.Recipes.World/Controller/HomeController/HomeController.cs b/Francesco.Recipes.World/Controller/HomeController/HomeController.cs index 9bd9a0a..88df8bc 100644 --- a/Francesco.Recipes.World/Controller/HomeController/HomeController.cs +++ b/Francesco.Recipes.World/Controller/HomeController/HomeController.cs @@ -2,6 +2,7 @@ { using Francesco.Recipes.World.Repositories.Category; using Francesco.Recipes.World.Repositories.Recipe; + using Francesco.Recipes.World.Views.Category; using Microsoft.AspNetCore.Mvc; public class HomeController : Controller @@ -19,7 +20,14 @@ public async Task Index() { var categories = await _categoryRepository.GetAllCategoriesWithRecipesAsync(); - return View("Index", categories); + + var viewModel = categories.Select(category => new CategoryRecipesViewModel + { + Category = category, + Recipes = category.Recipes, + }); + + return View("Index", viewModel); } [HttpGet("/Home/Search")] diff --git a/Francesco.Recipes.World/Controller/Recipe/RecipeController.cs b/Francesco.Recipes.World/Controller/Recipe/RecipeController.cs index b86ef61..24d9618 100644 --- a/Francesco.Recipes.World/Controller/Recipe/RecipeController.cs +++ b/Francesco.Recipes.World/Controller/Recipe/RecipeController.cs @@ -13,6 +13,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; + public class RecipeController : Controller { private readonly IRecipeRepository _recipeRepository; @@ -248,7 +249,13 @@ public async Task AddFavorite(Guid recipeId) { await _favoriteRepository.AddFavoriteAsync(recipeId); - return RedirectToAction("Details", new { recipeId }); + var recipe = await _recipeRepository.GetRecipeByIdAsync(recipeId); + if (recipe == null) + { + return NotFound("Recipe not found."); + } + + return PartialView("_FavoriteButton", recipe); } // POST: /Recipe/RemoveFavorite @@ -257,7 +264,13 @@ public async Task RemoveFavorite(Guid recipeId) { await _favoriteRepository.RemoveFavoriteAsync(recipeId); - return RedirectToAction("Details", new { recipeId }); + var recipe = await _recipeRepository.GetRecipeByIdAsync(recipeId); + if (recipe == null) + { + return NotFound("Recipe not found."); + } + + return PartialView("_FavoriteButton", recipe); } } } diff --git a/Francesco.Recipes.World/Repositories/Category/CategoryRepository.cs b/Francesco.Recipes.World/Repositories/Category/CategoryRepository.cs index 39e7228..821f14f 100644 --- a/Francesco.Recipes.World/Repositories/Category/CategoryRepository.cs +++ b/Francesco.Recipes.World/Repositories/Category/CategoryRepository.cs @@ -46,6 +46,7 @@ { return await _context.Categories .Include(c => c.Recipes) + .ThenInclude(r => r.MediaFiles) .ToListAsync(); } } diff --git a/Francesco.Recipes.World/Views/Home/Index.cshtml b/Francesco.Recipes.World/Views/Home/Index.cshtml index 8de8ea4..38c290a 100644 --- a/Francesco.Recipes.World/Views/Home/Index.cshtml +++ b/Francesco.Recipes.World/Views/Home/Index.cshtml @@ -1,6 +1,86 @@ -
+@model IEnumerable +@Html.AntiForgeryToken() + +
+ Willkommen +

Willkommen in der Rezept-App

+
+ + + +
+ +@foreach (var category in Model) +{ +
+
+

@category.Category.Name

+ Alle @category.Category.Name-Rezepte anzeigen +
+ +
+ @foreach (var recipe in category.Recipes) + { + var mediaFile = recipe.MediaFiles?.FirstOrDefault(); + var imageData = mediaFile?.Data; + var mimeType = mediaFile?.MimeType; + + + } + +
+ +
+
+
+} + + diff --git a/Francesco.Recipes.World/Views/Shared/_FavoriteButton.cshtml b/Francesco.Recipes.World/Views/Shared/_FavoriteButton.cshtml new file mode 100644 index 0000000..5cd045a --- /dev/null +++ b/Francesco.Recipes.World/Views/Shared/_FavoriteButton.cshtml @@ -0,0 +1,25 @@ +@model Francesco.Recipes.World.Models.BackendModels.Recipe.Recipe + + diff --git a/Francesco.Recipes.World/Views/Shared/_Layout.cshtml b/Francesco.Recipes.World/Views/Shared/_Layout.cshtml index fa98366..dace8db 100644 --- a/Francesco.Recipes.World/Views/Shared/_Layout.cshtml +++ b/Francesco.Recipes.World/Views/Shared/_Layout.cshtml @@ -73,6 +73,15 @@ document.body.classList.remove('bg-dark', 'text-white'); }); + + @await RenderSectionAsync("Scripts", required: false) diff --git a/Francesco.Recipes.World/wwwroot/images/star.svg b/Francesco.Recipes.World/wwwroot/images/star.svg new file mode 100644 index 0000000..25afd22 --- /dev/null +++ b/Francesco.Recipes.World/wwwroot/images/star.svg @@ -0,0 +1 @@ + \ No newline at end of file