private Result Validate(AgentRoleInfo roleInfo)
 => GenericValidator <AgentRoleInfo> .Validate(v =>
 {
     v.RuleFor(r => r.Name).NotEmpty();
     v.RuleFor(r => r.Permissions).NotEmpty();
 },
                                               roleInfo);
        public Task <Result> Add(AgentRoleInfo roleInfo)
        {
            return(Validate(roleInfo)
                   .Ensure(IsUnique, "A role with the same name or permission set already exists")
                   .Tap(Add));


            async Task <bool> IsUnique()
            => !await _context.AgentRoles
            .AnyAsync(r => r.Name.ToLower() == roleInfo.Name.ToLower() || r.Permissions == roleInfo.Permissions.ToFlags());


            Task Add()
            {
                _context.AgentRoles.Add(ToAgentRole(roleInfo));
                return(_context.SaveChangesAsync());
            }
        }
        public async Task <Result> Edit(int roleId, AgentRoleInfo roleInfo)
        {
            return(await Validate(roleInfo)
                   .Ensure(IsUnique, "A role with the same name or permission set already exists")
                   .Bind(() => Get(roleId))
                   .Tap(Edit));


            async Task <bool> IsUnique()
            => !await _context.AgentRoles
            .AnyAsync(r => (r.Name.ToLower() == roleInfo.Name.ToLower() || r.Permissions == roleInfo.Permissions.ToFlags()) &&
                      r.Id != roleId);


            Task Edit(AgentRole role)
            {
                role.Name        = roleInfo.Name;
                role.Permissions = roleInfo.Permissions.ToFlags();

                _context.Update(role);
                return(_context.SaveChangesAsync());
            }
        }
 private static AgentRole ToAgentRole(AgentRoleInfo agentRoleInfo)
 => new ()
Пример #5
0
 public async Task <IActionResult> Edit([FromBody] AgentRoleInfo roleInfo, [FromRoute] int roleId)
 => OkOrBadRequest(await _agentRolesManagementService.Edit(roleId, roleInfo));
Пример #6
0
 public async Task <IActionResult> Add([FromBody] AgentRoleInfo roleInfo)
 => OkOrBadRequest(await _agentRolesManagementService.Add(roleInfo));