private static Result Validate(AdministratorRoleInfo roleInfo) => GenericValidator <AdministratorRoleInfo> .Validate(v => { v.RuleFor(r => r.Name).NotEmpty(); v.RuleFor(r => r.Permissions).NotEmpty(); }, roleInfo);
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()); } }
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()); } }
public async Task <IActionResult> Edit([FromBody] AdministratorRoleInfo roleInfo, [FromRoute] int roleId) => OkOrBadRequest(await _administratorRolesManagementService.Edit(roleId, roleInfo));
public async Task <IActionResult> Add([FromBody] AdministratorRoleInfo roleInfo) => OkOrBadRequest(await _administratorRolesManagementService.Add(roleInfo));
public static AdministratorRole ToAdministratorRole(this AdministratorRoleInfo administratorRoleInfo) => new()