Wp2ghost/GhostImageManager/Services/ImageReplacementService.cs
2026-09-24 19:23:54 +02:00

61 lines
1.8 KiB
C#

using GhostImageManager.Models;
namespace GhostImageManager.Services;
public class ImageReplacementService
{
private readonly ILogger<ImageReplacementService> _logger;
public ImageReplacementService(ILogger<ImageReplacementService> logger)
{
_logger = logger;
}
public async Task<bool> ReplaceImageAsync(GhostImage oldImage, Stream newImageStream, string newFileName)
{
try
{
if (!File.Exists(oldImage.FilePath))
{
_logger.LogError("Alte Bilddatei nicht gefunden: {Path}", oldImage.FilePath);
return false;
}
// Backup der alten Datei erstellen
var backupPath = oldImage.FilePath + ".backup";
File.Copy(oldImage.FilePath, backupPath, overwrite: true);
// Neue Datei schreiben
using (var fileStream = File.Create(oldImage.FilePath))
{
await newImageStream.CopyToAsync(fileStream);
}
_logger.LogInformation("Bild ersetzt: {OldFile} durch {NewFile}", oldImage.FileName, newFileName);
return true;
}
catch (Exception ex)
{
_logger.LogError(ex, "Fehler beim Ersetzen des Bildes {File}", oldImage.FileName);
return false;
}
}
public bool RestoreBackup(GhostImage image)
{
try
{
var backupPath = image.FilePath + ".backup";
if (!File.Exists(backupPath))
return false;
File.Copy(backupPath, image.FilePath, overwrite: true);
return true;
}
catch (Exception ex)
{
_logger.LogError(ex, "Fehler beim Wiederherstellen des Backups für {File}", image.FileName);
return false;
}
}
}