Compare commits

..

2 Commits

Author SHA1 Message Date
4e23338553 Merge pull request 'test' (#2) from test into develop
Reviewed-on: #2
2025-12-04 11:54:17 +00:00
95c07339ab .gitea/workflows/pipeline.yml aktualisiert
All checks were successful
Branch - test - Build and Push Backend API Docker Image / build-and-push (push) Successful in 26s
2025-11-26 16:02:12 +00:00
2 changed files with 11 additions and 29 deletions

View File

@@ -39,4 +39,4 @@ jobs:
# Legt fest, dass das Image nach dem Bauen in die Registry gepusht werden soll
push: true
# Definiert die Tags für Ihr Docker-Image in der Registry
tags: gitea.tzbre.dev/admin/shopsolution-backend:test # WICHTIG: Eindeutiger Name für das Backend-Image
tags: gitea.tzbre.dev/admin/shopsolution-backend:dev # WICHTIG: Eindeutiger Name für das Backend-Image

View File

@@ -47,9 +47,7 @@ namespace Webshop.Application.Services.Admin
}
string? imageUrl = null;
// FIX: Pr<50>fung auf Length > 0 hinzugef<65>gt, wie im ProductService
if (categorieDto.ImageFile != null && categorieDto.ImageFile.Length > 0)
if (categorieDto.ImageFile != null)
{
await using var stream = categorieDto.ImageFile.OpenReadStream();
imageUrl = await _fileStorageService.SaveFileAsync(stream, categorieDto.ImageFile.FileName, categorieDto.ImageFile.ContentType);
@@ -86,41 +84,23 @@ namespace Webshop.Application.Services.Admin
return ServiceResult.Fail(ServiceResultType.Conflict, "Eine andere Kategorie mit diesem Slug existiert bereits.");
}
// -----------------------------------------------------------------------
// BILD UPDATE LOGIK (Verbessert)
// -----------------------------------------------------------------------
// 1. Neues Bild hochladen, falls vorhanden
if (categorieDto.ImageFile != null && categorieDto.ImageFile.Length > 0)
string? imageUrl = existing.ImageUrl;
if (categorieDto.ImageFile != null)
{
await using var stream = categorieDto.ImageFile.OpenReadStream();
var newUrl = await _fileStorageService.SaveFileAsync(stream, categorieDto.ImageFile.FileName, categorieDto.ImageFile.ContentType);
// Bestehendes Bild <20>berschreiben
existing.ImageUrl = newUrl;
imageUrl = await _fileStorageService.SaveFileAsync(stream, categorieDto.ImageFile.FileName, categorieDto.ImageFile.ContentType);
}
// 2. Optional: Logik zum L<>schen des Bildes
// ACHTUNG: Die vorherige Logik hat das Bild oft versehentlich gel<65>scht, wenn das DTO
// das Feld 'ImageUrl' leer hatte (was bei Datei-Uploads oft passiert).
// Wir l<>schen nur, wenn KEIN neues File da ist UND explizit ein leerer String <20>bergeben wurde,
// aber wir m<>ssen vorsichtig sein, dass null (nicht gesendet) das Bild nicht l<>scht.
// Im Zweifel: Wenn du das Bild l<>schen willst, br<62>uchtest du ein explizites Flag (z.B. bool DeleteImage).
// Hier belassen wir es dabei: Wenn kein neues Bild kommt, bleibt das alte erhalten.
// Falls du explizit L<>schen unterst<73>tzen willst, wenn ImageUrl leer ist, nutze dies mit Vorsicht:
/*
else if (categorieDto.ImageUrl != null && string.IsNullOrEmpty(categorieDto.ImageUrl))
else if (string.IsNullOrEmpty(categorieDto.ImageUrl) && !string.IsNullOrEmpty(existing.ImageUrl))
{
// Nur l<>schen, wenn ImageUrl explizit als leerer String (nicht null) gesendet wurde
existing.ImageUrl = null;
// Hier k<>nnte Logik zum L<>schen der alten Datei stehen, falls gew<EFBFBD>nscht
imageUrl = null;
}
*/
// Mapping der restlichen Felder
existing.Name = categorieDto.Name;
existing.Slug = categorieDto.Slug;
existing.Description = categorieDto.Description;
existing.ParentcategorieId = categorieDto.ParentcategorieId;
existing.ImageUrl = imageUrl;
existing.IsActive = categorieDto.IsActive;
existing.DisplayOrder = categorieDto.DisplayOrder;
existing.LastModifiedDate = DateTimeOffset.UtcNow;
@@ -144,6 +124,8 @@ namespace Webshop.Application.Services.Admin
return ServiceResult.Fail(ServiceResultType.Conflict, "Kategorie kann nicht gel<65>scht werden, da sie als <20>bergeordnete Kategorie f<>r andere Kategorien dient.");
}
// Hier k<>nnte man auch pr<70>fen, ob Produkte dieser Kategorie zugeordnet sind.
await _categorieRepository.DeleteAsync(id);
return ServiceResult.Ok();
}