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

109 lines
2.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
{
/// <summary>
/// Логика работы с бекапом
/// </summary>
public class BackupBusinessLogic : CoreBusinessLogic, IBackupLogic
{
/// <summary>
/// Серивс для работы с бекапом
/// </summary>
private readonly IBackupService _service;
/// <summary>
/// Логика работы с бекапом
/// </summary>
/// <param name="service"></param>
public BackupBusinessLogic(IBackupService service)
{
_service = service;
_serviceOperation = AccessOperation.РаботасБекапом;
_entity = "Работа с Бекапом";
}
/// <summary>
/// Создание бекапа с данными
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
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;
}
}
/// <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));
return false;
}
}
}
}