using ModuleTools.BindingModels;
using ModuleTools.Enums;
using ModuleTools.Interfaces;
using ModuleTools.Models;
using System.Collections.Generic;
namespace ModuleTools.BusinessLogics
{
///
/// Основа всех бизнес-логик
///
public class CoreBusinessLogic
{
///
/// Менеджер безопасности
///
protected readonly ISecurityManager _security;
///
/// Тип операции, скоторым работает логика
///
protected AccessOperation _serviceOperation;
///
/// Название сущности
///
protected string _entity;
///
/// Перечень ошибок при выполнении операции
///
public List<(string Title, string Message)> Errors { get; protected set; }
///
/// Основа всех бизнес-логик
///
///
public CoreBusinessLogic()
{
_security = DependencyManager.Instance.Resolve();
Errors = new();
}
///
/// Проверка доступности операции для пользователя
///
///
///
///
protected bool NoAccess(AccessBindingModel model, AccessType type)
{
if (_security.CheckAccess(new SecurityManagerCheckAccessModel(model, _serviceOperation, type, _entity)))
{
return false;
}
Errors.Add(("Ошибка безопасности", _security.ErrorMessage));
return true;
}
}
}