64 lines
2 KiB
C#
64 lines
2 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)
|
|
{
|
|
_logger.LogInformation("Ersetze Bild {OldFile} durch {NewFile}", oldImage.FileName, 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);
|
|
_logger.LogDebug("Backup erstellt: {BackupPath}", backupPath);
|
|
|
|
// 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;
|
|
}
|
|
}
|
|
}
|