categorie image fix
This commit is contained in:
@@ -47,7 +47,9 @@ namespace Webshop.Application.Services.Admin
|
|||||||
}
|
}
|
||||||
|
|
||||||
string? imageUrl = null;
|
string? imageUrl = null;
|
||||||
if (categorieDto.ImageFile != null)
|
|
||||||
|
// FIX: Pr<50>fung auf Length > 0 hinzugef<65>gt, wie im ProductService
|
||||||
|
if (categorieDto.ImageFile != null && categorieDto.ImageFile.Length > 0)
|
||||||
{
|
{
|
||||||
await using var stream = categorieDto.ImageFile.OpenReadStream();
|
await using var stream = categorieDto.ImageFile.OpenReadStream();
|
||||||
imageUrl = await _fileStorageService.SaveFileAsync(stream, categorieDto.ImageFile.FileName, categorieDto.ImageFile.ContentType);
|
imageUrl = await _fileStorageService.SaveFileAsync(stream, categorieDto.ImageFile.FileName, categorieDto.ImageFile.ContentType);
|
||||||
@@ -84,23 +86,41 @@ namespace Webshop.Application.Services.Admin
|
|||||||
return ServiceResult.Fail(ServiceResultType.Conflict, "Eine andere Kategorie mit diesem Slug existiert bereits.");
|
return ServiceResult.Fail(ServiceResultType.Conflict, "Eine andere Kategorie mit diesem Slug existiert bereits.");
|
||||||
}
|
}
|
||||||
|
|
||||||
string? imageUrl = existing.ImageUrl;
|
// -----------------------------------------------------------------------
|
||||||
if (categorieDto.ImageFile != null)
|
// BILD UPDATE LOGIK (Verbessert)
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
// 1. Neues Bild hochladen, falls vorhanden
|
||||||
|
if (categorieDto.ImageFile != null && categorieDto.ImageFile.Length > 0)
|
||||||
{
|
{
|
||||||
await using var stream = categorieDto.ImageFile.OpenReadStream();
|
await using var stream = categorieDto.ImageFile.OpenReadStream();
|
||||||
imageUrl = await _fileStorageService.SaveFileAsync(stream, categorieDto.ImageFile.FileName, categorieDto.ImageFile.ContentType);
|
var newUrl = await _fileStorageService.SaveFileAsync(stream, categorieDto.ImageFile.FileName, categorieDto.ImageFile.ContentType);
|
||||||
}
|
|
||||||
else if (string.IsNullOrEmpty(categorieDto.ImageUrl) && !string.IsNullOrEmpty(existing.ImageUrl))
|
|
||||||
{
|
|
||||||
// Hier k<>nnte Logik zum L<>schen der alten Datei stehen, falls gew<65>nscht
|
|
||||||
imageUrl = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Bestehendes Bild <20>berschreiben
|
||||||
|
existing.ImageUrl = newUrl;
|
||||||
|
}
|
||||||
|
// 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))
|
||||||
|
{
|
||||||
|
// Nur l<>schen, wenn ImageUrl explizit als leerer String (nicht null) gesendet wurde
|
||||||
|
existing.ImageUrl = null;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Mapping der restlichen Felder
|
||||||
existing.Name = categorieDto.Name;
|
existing.Name = categorieDto.Name;
|
||||||
existing.Slug = categorieDto.Slug;
|
existing.Slug = categorieDto.Slug;
|
||||||
existing.Description = categorieDto.Description;
|
existing.Description = categorieDto.Description;
|
||||||
existing.ParentcategorieId = categorieDto.ParentcategorieId;
|
existing.ParentcategorieId = categorieDto.ParentcategorieId;
|
||||||
existing.ImageUrl = imageUrl;
|
|
||||||
existing.IsActive = categorieDto.IsActive;
|
existing.IsActive = categorieDto.IsActive;
|
||||||
existing.DisplayOrder = categorieDto.DisplayOrder;
|
existing.DisplayOrder = categorieDto.DisplayOrder;
|
||||||
existing.LastModifiedDate = DateTimeOffset.UtcNow;
|
existing.LastModifiedDate = DateTimeOffset.UtcNow;
|
||||||
@@ -124,8 +144,6 @@ 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.");
|
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);
|
await _categorieRepository.DeleteAsync(id);
|
||||||
return ServiceResult.Ok();
|
return ServiceResult.Ok();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user