DepartmentProject/DepartmentPortal/Security/SecurityBusinessLogic/BusinessLogics/BackupBusinessLogic.cs

109 lines
2.7 KiB
C#
Raw Permalink Normal View History

using SecurityContract.BindingModels;
using SecurityContract.Logics;
2022-03-20 10:10:44 +04:00
using SecurityContract.Services;
2021-04-02 15:53:15 +04:00
using System;
using System.IO;
2022-03-20 10:10:44 +04:00
using ToolsModule.ManagmentEntity;
using ToolsModule.ManagmentExtension;
using ToolsModule.ManagmentSecurity;
2021-04-02 15:53:15 +04:00
namespace SecurityBusinessLogic.BusinessLogics
{
/// <summary>
/// Логика работы с бекапом
/// </summary>
public class BackupBusinessLogic : CoreBusinessLogic, IBackupLogic
2021-04-02 15:53:15 +04:00
{
/// <summary>
/// Серивс для работы с бекапом
/// </summary>
private readonly IBackupService _service;
2021-04-02 15:53:15 +04:00
/// <summary>
/// Логика работы с бекапом
/// </summary>
/// <param name="service"></param>
public BackupBusinessLogic(IBackupService service)
{
_service = service;
_serviceOperation = AccessOperation.РаботасБекапом;
_entity = "Работа с Бекапом";
}
2021-04-02 15:53:15 +04:00
/// <summary>
/// Создание бекапа с данными
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
2021-04-02 15:53:15 +04:00
public bool CreateBackUp(BackupBindingModel model)
{
if (model.FolderName.IsEmpty())
2021-04-02 15:53:15 +04:00
{
Errors.Add(("Ошибка", "Путь до папки не указан"));
2021-04-02 15:53:15 +04:00
return false;
}
try
2021-04-02 15:53:15 +04:00
{
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;
}
}
/// <summary>
/// Восстанволение данных через бекап
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
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));
2021-04-02 15:53:15 +04:00
return false;
}
}
}
}