From e42c4d674169431d0d7f980b7660a0235f04f2c4 Mon Sep 17 00:00:00 2001 From: "Tizian.Breuch" Date: Tue, 25 Nov 2025 11:58:53 +0100 Subject: [PATCH] bilder main image change --- .../DTOs/Products/UpdateAdminProductDto.cs | 3 ++- .../Services/Admin/AdminProductService.cs | 27 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Webshop.Application/DTOs/Products/UpdateAdminProductDto.cs b/Webshop.Application/DTOs/Products/UpdateAdminProductDto.cs index 6f56787..2321d6e 100644 --- a/Webshop.Application/DTOs/Products/UpdateAdminProductDto.cs +++ b/Webshop.Application/DTOs/Products/UpdateAdminProductDto.cs @@ -22,11 +22,12 @@ namespace Webshop.Application.DTOs.Products [Required] public string Slug { get; set; } - // << ZURÜCK ZU IFormFile >> public IFormFile? MainImageFile { get; set; } public List? AdditionalImageFiles { get; set; } public List? ImagesToDelete { get; set; } + public Guid? SetMainImageId { get; set; } + public List? CategorieIds { get; set; } = new List(); public decimal? Weight { get; set; } diff --git a/Webshop.Application/Services/Admin/AdminProductService.cs b/Webshop.Application/Services/Admin/AdminProductService.cs index c27e558..47cce16 100644 --- a/Webshop.Application/Services/Admin/AdminProductService.cs +++ b/Webshop.Application/Services/Admin/AdminProductService.cs @@ -189,6 +189,33 @@ namespace Webshop.Application.Services.Admin imagesChanged = true; } + // >>> NEU: A2.5 Szenario: BESTEHENDES Bild als Hauptbild <<< + else if (productDto.SetMainImageId.HasValue) + { + // Wir suchen das Bild in der Liste, die wir schon aus der DB geladen haben + var targetImage = existingProduct.Images.FirstOrDefault(img => img.Id == productDto.SetMainImageId.Value); + + // Nur ausführen, wenn Bild existiert und noch nicht Main ist + if (targetImage != null && !targetImage.IsMainImage) + { + Console.WriteLine($"---- Setze existierendes Bild {targetImage.Id} als MAIN ----"); + + // 1. Alle Bilder auf "Nicht-Main" setzen + foreach (var img in existingProduct.Images) + { + img.IsMainImage = false; + // Optional: Ordnung korrigieren, damit Main immer vorne ist + if (img.DisplayOrder == 1) img.DisplayOrder = 2; + } + + // 2. Das gewählte Bild auf Main setzen + targetImage.IsMainImage = true; + targetImage.DisplayOrder = 1; + + // Da wir hier getrackte Entities ändern, generiert EF Core automatisch UPDATEs + imagesChanged = true; + } + } // A3. Zusatzbilder if (productDto.AdditionalImageFiles != null && productDto.AdditionalImageFiles.Any())