using DatabaseCore; using DatabaseCore.Models.Security; using Microsoft.EntityFrameworkCore; using ModuleTools.Enums; using ModuleTools.Models; using SecurityBusinessLogic.BindingModels; using SecurityBusinessLogic.Interfaces; using SecurityBusinessLogic.ViewModels; using System; using System.Linq; namespace SecurityDatabaseImplementation.Implementations { /// /// Реализация IRoleService /// public class RoleService : AbstractGenerticEntityService, IRoleService { protected override OperationResultModel AdditionalCheckingWhenAdding(DbContext context, RoleSetBindingModel model) => OperationResultModel.Success(null); protected override OperationResultModel AdditionalCheckingWhenDeleting(DbContext context, RoleGetBindingModel model) { if (context.Set().Any(x => x.RoleId == model.Id && !x.IsDeleted)) { return OperationResultModel.Error("Error:", "Существуют пользователи, у которых есть эта роль", ResultServiceStatusCode.ExsistItem); } return OperationResultModel.Success(null); } protected override IQueryable AdditionalCheckingWhenReadingList(IQueryable query, RoleGetBindingModel model) => query; protected override OperationResultModel AdditionalCheckingWhenUpdateing(DbContext context, RoleSetBindingModel model) => OperationResultModel.Success(null); protected override void AdditionalDeleting(DbContext context, RoleGetBindingModel model) { var access = context.Set().Where(x => x.RoleId == model.Id); foreach (var ac in access) { ac.IsDeleted = true; ac.DateDelete = DateTime.Now; } context.SaveChanges(); } protected override Role GetUniqueEntity(RoleSetBindingModel model, DbContext context) => context.Set().FirstOrDefault(x => x.RoleName == model.RoleName && x.Id != model.Id); protected override IQueryable IncludingWhenReading(IQueryable query) => query; protected override IQueryable OrderingWhenReading(IQueryable query) => query.OrderBy(x => x.RoleName); } }