Exemple #1
0
 private static Result Validate(AdministratorRoleInfo roleInfo)
 => GenericValidator <AdministratorRoleInfo> .Validate(v =>
 {
     v.RuleFor(r => r.Name).NotEmpty();
     v.RuleFor(r => r.Permissions).NotEmpty();
 },
                                                       roleInfo);
Exemple #2
0
        public Task <Result> Add(AdministratorRoleInfo 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.AdministratorRoles
            .AnyAsync(r => r.Name.ToLower() == roleInfo.Name.ToLower() || r.Permissions == roleInfo.Permissions.ToFlags());


            Task Add()
            {
                _context.AdministratorRoles.Add(roleInfo.ToAdministratorRole());
                return(_context.SaveChangesAsync());
            }
        }
Exemple #3
0
        public async Task <Result> Edit(int roleId, AdministratorRoleInfo 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.AdministratorRoles
            .AnyAsync(r => (r.Name.ToLower() == roleInfo.Name.ToLower() || r.Permissions == roleInfo.Permissions.ToFlags()) &&
                      r.Id != roleId);


            Task Edit(AdministratorRole role)
            {
                role.Name              = roleInfo.Name;
                role.Permissions       = roleInfo.Permissions.ToFlags();
                role.NotificationTypes = roleInfo.NotificationTypes ?? Array.Empty <NotificationTypes>();

                _context.Update(role);
                return(_context.SaveChangesAsync());
            }
        }
Exemple #4
0
 public async Task <IActionResult> Edit([FromBody] AdministratorRoleInfo roleInfo, [FromRoute] int roleId)
 => OkOrBadRequest(await _administratorRolesManagementService.Edit(roleId, roleInfo));
Exemple #5
0
 public async Task <IActionResult> Add([FromBody] AdministratorRoleInfo roleInfo)
 => OkOrBadRequest(await _administratorRolesManagementService.Add(roleInfo));
Exemple #6
0
 public static AdministratorRole ToAdministratorRole(this AdministratorRoleInfo administratorRoleInfo)
 => new()