private MediaImage RevertChanges(MediaImage canceledImage)
{
var previousOriginal =
repository.AsQueryable<MediaImage>().OrderByDescending(i => i.PublishedOn).FirstOrDefault(f => f.Original != null && f.Original.Id == canceledImage.Id);
if (previousOriginal != null)
{
var folderName = Path.GetFileName(Path.GetDirectoryName(previousOriginal.FileUri.OriginalString));
var publicFileName = MediaHelper.RemoveInvalidPathSymbols(MediaImageHelper.CreatePublicFileName(previousOriginal.OriginalFileName, previousOriginal.OriginalFileExtension));
// Get original file stream
using (var fileStream = DownloadFileStream(previousOriginal.PublicUrl))
{
// Get thumbnail file stream
using (var thumbnailFileStream = DownloadFileStream(previousOriginal.PublicThumbnailUrl))
{
previousOriginal.CopyDataTo(canceledImage);
mediaImageVersionPathService.SetPathForArchive(canceledImage, folderName, publicFileName);
StartTasksForImage(canceledImage, fileStream, thumbnailFileStream, previousOriginal.IsEdited());
canceledImage.Original = null;
unitOfWork.BeginTransaction();
repository.Save(canceledImage);
unitOfWork.Commit();
}
}
}
return previousOriginal;
}