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 ()
public async Task <IActionResult> Edit([FromBody] AgentRoleInfo roleInfo, [FromRoute] int roleId) => OkOrBadRequest(await _agentRolesManagementService.Edit(roleId, roleInfo));
public async Task <IActionResult> Add([FromBody] AgentRoleInfo roleInfo) => OkOrBadRequest(await _agentRolesManagementService.Add(roleInfo));