using ModuleTools.BusinessLogics;
using ModuleTools.Enums;
using ModuleTools.Extensions;
using SecurityBusinessLogic.BindingModels;
using SecurityBusinessLogic.Interfaces;
using System;
using System.IO;
namespace SecurityBusinessLogic.BusinessLogics
{
///
/// Логика работы с бекапом
///
public class BackupBusinessLogic : CoreBusinessLogic
{
///
/// Серивс для работы с бекапом
///
private readonly IBackupService _service;
///
/// Логика работы с бекапом
///
///
public BackupBusinessLogic(IBackupService service)
{
_service = service;
_serviceOperation = AccessOperation.РаботасБекапом;
_entity = "Работа с Бекапом";
}
///
/// Создание бекапа с данными
///
///
///
public bool CreateBackUp(BackupBindingModel model)
{
if (model.FolderName.IsEmpty())
{
Errors.Add(("Ошибка", "Путь до папки не указан"));
return false;
}
try
{
if (NoAccess(null, AccessType.Delete))
{
return false;
}
var result = _service.CreateBackUp(model);
if (!result.IsSucceeded)
{
Errors.AddRange(result.Errors);
return false;
}
return true;
}
catch (Exception ex)
{
Errors.Add(("Ошибка", ex.Message));
return false;
}
}
///
/// Восстанволение данных через бекап
///
///
///
public bool RestoreBackUp(BackupBindingModel model)
{
if (model.FolderName.IsEmpty() && model.ArchiveFileName.IsEmpty())
{
Errors.Add(("Ошибка", "Путь до папки/архива не указан"));
return false;
}
if (model.ArchiveFileName.IsNotEmpty() && !File.Exists(model.ArchiveFileName))
{
Errors.Add(("Ошибка", "Файл с архивом не найден"));
return false;
}
if (model.ArchiveFileName.IsEmpty() && !Directory.Exists(model.FolderName))
{
Errors.Add(("Ошибка", "Папка с даными не найдена"));
return false;
}
try
{
if (NoAccess(null, AccessType.Delete))
{
return false;
}
var result = _service.RestoreBackUp(model);
if (!result.IsSucceeded)
{
Errors.AddRange(result.Errors);
return false;
}
return true;
}
catch (Exception ex)
{
Errors.Add(("Ошибка", ex.Message));
return false;
}
}
}
}