diff --git a/Francesco.Recipes.World/Controller/Favorite/FavoriteController.cs b/Francesco.Recipes.World/Controller/Favorite/FavoriteController.cs index 9cd9c7a..e7e8b25 100644 --- a/Francesco.Recipes.World/Controller/Favorite/FavoriteController.cs +++ b/Francesco.Recipes.World/Controller/Favorite/FavoriteController.cs @@ -5,7 +5,6 @@ using Francesco.Recipes.World.Repositories.Favorit; using Microsoft.AspNetCore.Mvc; - [Route("Favorite")] public class FavoriteController : Controller { private readonly IFavoriteRepository _favoriteRepository; diff --git a/Francesco.Recipes.World/Controller/HomeController/HomeController.cs b/Francesco.Recipes.World/Controller/HomeController/HomeController.cs index 88df8bc..50013db 100644 --- a/Francesco.Recipes.World/Controller/HomeController/HomeController.cs +++ b/Francesco.Recipes.World/Controller/HomeController/HomeController.cs @@ -2,7 +2,6 @@ { 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,15 +18,8 @@ [HttpGet] public async Task Index() { - var categories = await _categoryRepository.GetAllCategoriesWithRecipesAsync(); - - var viewModel = categories.Select(category => new CategoryRecipesViewModel - { - Category = category, - Recipes = category.Recipes, - }); - - return View("Index", viewModel); + var categoriesWithRecipes = await _categoryRepository.GetAllCategoriesWithRecipesViewModelAsync(); + return View(categoriesWithRecipes); } [HttpGet("/Home/Search")] diff --git a/Francesco.Recipes.World/Controller/Recipe/RecipeController.cs b/Francesco.Recipes.World/Controller/Recipe/RecipeController.cs index 46177ee..9129798 100644 --- a/Francesco.Recipes.World/Controller/Recipe/RecipeController.cs +++ b/Francesco.Recipes.World/Controller/Recipe/RecipeController.cs @@ -12,7 +12,6 @@ using Francesco.Recipes.World.Repositories.MediaFile; using Francesco.Recipes.World.Repositories.Recipe; using Francesco.Recipes.World.Repositories.Unit; - using Francesco.Recipes.World.Views.Category; using Francesco.Recipes.World.Views.Recipe; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; @@ -91,15 +90,8 @@ [HttpGet("CategoryRecipes")] public async Task CategoryRecipes() { - var categories = await _categoryRepository.GetAllCategoriesWithRecipesAsync(); - - var viewModel = categories.Select(c => new CategoryRecipesViewModel - { - Category = c, - Recipes = c.Recipes, - }).ToList(); - - return View(viewModel); + var categoryViewModels = await _categoryRepository.GetAllCategoriesWithRecipesAsync(); + return View(categoryViewModels); } // POST: /Recipe/{recipeId}/AddOrCreateIngredient @@ -424,34 +416,35 @@ return View(favoriteRecipes); } - // POST: /Recipe/AddFavorite [HttpPost("AddFavorite")] [ValidateAntiForgeryToken] public async Task AddFavorite(Guid recipeId) { await _favoriteRepository.AddFavoriteAsync(recipeId); - var recipe = await _recipeRepository.GetRecipeByIdAsync(recipeId); - if (recipe == null) - { - return NotFound("Recipe not found."); - } - return PartialView("_FavoriteButton", recipe); + // We only need to know the Id and IsFavorite status + var viewModel = new FavoritButtonViewModel + { + Id = recipeId, + IsFavorite = true, + }; + + return PartialView("_FavoriteButton", viewModel); } - // POST: /Recipe/RemoveFavorite [HttpPost("RemoveFavorite")] [ValidateAntiForgeryToken] public async Task RemoveFavorite(Guid recipeId) { await _favoriteRepository.RemoveFavoriteAsync(recipeId); - var recipe = await _recipeRepository.GetRecipeByIdAsync(recipeId); - if (recipe == null) - { - return NotFound("Recipe not found."); - } - return PartialView("_FavoriteButton", recipe); + var viewModel = new FavoritButtonViewModel + { + Id = recipeId, + IsFavorite = false, + }; + + return PartialView("_FavoriteButton", viewModel); } // GET: /Recipe/{recipeId}/GetIngredients @@ -497,7 +490,6 @@ return View(recipe); } - // DELETE: /Recipe/{recipeId}/Delete [HttpDelete("{recipeId}/Delete")] [ValidateAntiForgeryToken] public async Task DeleteConfirmed(Guid recipeId) @@ -506,12 +498,24 @@ if (deleted) { - TempData["SuccessMessage"] = "Rezept wurde erfolgreich gelöscht."; + if (Request.Headers.ContainsKey("HX-Request")) + { + Response.Headers["HX-Redirect"] = Url.Action("Index", "Home"); + return Ok(); + } + return RedirectToAction("Index", "Home"); } else { TempData["ErrorMessage"] = "Rezept nicht gefunden oder konnte nicht gelöscht werden."; + + if (Request.Headers.ContainsKey("HX-Request")) + { + Response.Headers["HX-Redirect"] = Url.Action("Details", new { recipeId }); + return Ok(); + } + return RedirectToAction("Details", new { recipeId }); } }