コード例 #1
0
        /// <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);
            });
        }
コード例 #2
0
        /// <inheritdoc />
        public async Task <RoleToWorkgroup> AddRoleToWorkgroup(int?roleId, int?workgroupId)
        {
            RoleToWorkgroup roleWorkgroup = new RoleToWorkgroup
            {
                RoleId      = roleId,
                WorkgroupId = workgroupId
            };

            return((await DbContext.AddAsync(roleWorkgroup)).Entity);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
        /// <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);
        }