/// <inheritdoc /> public async Task UpdateWorkgroupRolePermissionsAsync(int workgroupRoleId, List <int> permissionsIds) { // TODO: Добавить проверка на возможность добавлять текущем пользователем указанных пермиссий await _permissionRepository.ExecuteInTransactionAsync(async() => { RoleToWorkgroup domainWorkgroupRole = await _roleToWorkgroupRepository .GetByIdWithPermissionsAsync(workgroupRoleId); if (domainWorkgroupRole == null) { throw new CustomException( string.Format(Messages.Exception_EntityNotFoundTemplate, EntityTypeEnum.Role, workgroupRoleId )); } domainWorkgroupRole.Permissions.Clear(); await _roleToWorkgroupRepository.SaveChangesAsync(); foreach (int permissionId in permissionsIds) { domainWorkgroupRole.Permissions.Add(new PermissionsToWorkgroupRole { PermissionId = permissionId, RoleToWorkgroupId = workgroupRoleId }); } await _roleToWorkgroupRepository.UpdateAndSaveAsync(domainWorkgroupRole); }); }
/// <inheritdoc /> public async Task <RoleToWorkgroup> AddRoleToWorkgroup(int?roleId, int?workgroupId) { RoleToWorkgroup roleWorkgroup = new RoleToWorkgroup { RoleId = roleId, WorkgroupId = workgroupId }; return((await DbContext.AddAsync(roleWorkgroup)).Entity); }
/// <inheritdoc /> public async Task <int> CreateOrEditRoleWorkgroupPermissionsAsync(RoleToWorkroupDto workgroupRole) { RoleToWorkgroup domainWorkgroupRole = await _permissionRepository .GetByRoleAndWorkgroupIds(workgroupRole.RoleId, workgroupRole.WorkgroupId); if (domainWorkgroupRole != null) { return(domainWorkgroupRole.Id); } RoleToWorkgroup roleToWorkgroup = await _roleRepository .AddRoleToWorkgroup(workgroupRole.RoleId, workgroupRole.WorkgroupId); await _roleRepository.SaveChangesAsync(); return(roleToWorkgroup.Id); }
/// <inheritdoc /> public async Task <int> CreateRoleAsync(RoleDto roleDto) { Role domainRole = Mapper.Map <Role>(roleDto); domainRole.OwnerId = UserId; IdentityResult result = await _identityRoleManager.CreateAsync(domainRole); if (!result.Succeeded) { throw new ValidationException(new ValidationResult(result.Errors.ConvertToValidationResult())); } RoleToWorkgroup roleToWorkgroup = await _roleRepository .AddRoleToWorkgroup(domainRole.Id, null); await _roleRepository.SaveChangesAsync(); return(domainRole.Id); }
/// <inheritdoc /> public async Task <int> CreateWorkgroupAsync(WorkgroupDto workgroupDto) { Workgroup domainWorkgroup = Mapper.Map <Workgroup>(workgroupDto); domainWorkgroup.OwnerId = UserId; bool isExist = await _workgroupRepository.IsExistAsync(domainWorkgroup); if (isExist) { throw new CustomException( string.Format(Messages.Exception_EntityAlreadyExist_Templete, Messages.Entity_Workgroup)); } int result = (await _workgroupRepository.AddAsync(domainWorkgroup)).Id; await _workgroupRepository.SaveChangesAsync(); RoleToWorkgroup roleToWorkgroup = await _workgroupRepository .AddRoleToWorkgroup(null, domainWorkgroup.Id); await _workgroupRepository.SaveChangesAsync(); return(domainWorkgroup.Id); }