using SecurityContract.BindingModels; using SecurityContract.Interfaces; using SecurityContract.Logics; using System; using System.IO; using ToolsModule.BusinessLogics; using ToolsModule.Enums; using ToolsModule.Extensions; namespace SecurityBusinessLogic.BusinessLogics { /// /// Логика работы с бекапом /// public class BackupBusinessLogic : CoreBusinessLogic, IBackupLogic { /// /// Серивс для работы с бекапом /// 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; } } } }