DepartmentProject/DepartmentPortal/Common/ModuleTools/BusinessLogics/CoreBusinessLogic.cs

60 lines
1.6 KiB
C#
Raw Normal View History

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