From b4b8062b13550df9f435161972e608d797627b15 Mon Sep 17 00:00:00 2001 From: Francesco Lorenzo D'Amico Date: Tue, 27 May 2025 12:18:37 +0200 Subject: [PATCH] Add recipe ingredient JSON serialization and dynamic function via JS --- .../Views/ShoppingList/Details.cshtml | 407 ++++++++++++++---- 1 file changed, 322 insertions(+), 85 deletions(-) diff --git a/Francesco.Recipes.World/Views/ShoppingList/Details.cshtml b/Francesco.Recipes.World/Views/ShoppingList/Details.cshtml index 04250be..4833282 100644 --- a/Francesco.Recipes.World/Views/ShoppingList/Details.cshtml +++ b/Francesco.Recipes.World/Views/ShoppingList/Details.cshtml @@ -1,95 +1,332 @@ @model Francesco.Recipes.World.Models.ShoppingListDetailsViewModel @{ - ViewData["Title"] = "Einkaufsliste Details"; + ViewData["Title"] = "Einkaufsliste Details"; } -

Einkaufsliste Details

-
- Anzahl Rezepte: @Model.RecipeCount +@using System.Text.Json +@{ + var recipeIngredientsJson = JsonSerializer.Serialize( + Model.RecipesInAnyShoppingList.ToDictionary( + r => r.Id, + r => r.RecipeIngredients.Select(ri => new + { + id = ri.Id, + name = ri.Ingredient.Name, + amount = ri.Quantity, + unit = ri.Unit.Name, + shoppingListId = Model.RecipeIngredientToShoppingListMap.ContainsKey(ri.Id) + ? Model.RecipeIngredientToShoppingListMap[ri.Id] + : Guid.Empty + }) + ) + ); + +} + +
+
+

Einkaufsliste Details

+
+ Anzahl Rezepte: @Model.RecipeCount +
+
+ +
+ +
+ @foreach (var recipe in Model.RecipesInAnyShoppingList) + { + var mediaFile = recipe.MediaFiles?.FirstOrDefault(); + var imageData = mediaFile?.Data; + var mimeType = mediaFile?.MimeType; + var ingredientCount = recipe.RecipeIngredients?.Count() ?? 0; + +
+
+
+ +
+
+ @if (imageData != null && mimeType != null) + { + @recipe.Name + } + else + { +
+ +
+ } +
+
+
@recipe.Name
+
+
+
+ } +
+ +
+ +
+
+
+

Zutaten

+
+
+
    +
    + +
    +
    +
    +
    -
    - -
    - @foreach (var recipe in Model.RecipesInAnyShoppingList) - { - var mediaFile = recipe.MediaFiles?.FirstOrDefault(); - var imageData = mediaFile?.Data; - var mimeType = mediaFile?.MimeType; - -
    -
    -
    - -
    -
    - @if (imageData != null && mimeType != null) - { - @recipe.Name - } - else - { -
    - -
    - } -
    -
    -
    @recipe.Name
    -
    -
    -
    -
    - } - - } - -
    - -
    - - - - @section Scripts { - + } \ No newline at end of file