public async Task <CommandResponse> Handle(CriarPerfilCommand request, CancellationToken cancellationToken) { var perfil = this.DefinirPerfil(request); var perfilExistente = await _perfilRepository.Buscar(p => p.Identifacao.Nome == request.Nome && p.DeletadoEm == null); if (perfilExistente.Any()) { await _mediator.Publish(new DomainNotification(request.GetType().Name, $"Um perfil com o nome {request.Nome} já existe.")); return(await Task.FromResult(CommandResponse.Fail)); } foreach (var item in request.Atribuicoes) { if (item.Ativo) { perfil = await _perfilService.AtribuirPermissaoAsync(perfil, item.PermissaoId); } else { perfil = await _perfilService.RevogarPermissaoAsync(perfil, item.PermissaoId); } } _perfilRepository.Adicionar(perfil); if (await Commit()) { await _mediator.Publish(new PerfilCriadoEvent(perfil)); } return(await Task.FromResult(CommandResponse.Ok)); }
public async Task <CommandResponse> Handle(AtualizarPerfilCommand request, CancellationToken cancellationToken) { if (!await PerfilExitente(request)) { return(await Task.FromResult(CommandResponse.Fail)); } var perfil = this.DefinirPerfil(request); var perfilExistente = await _perfilRepository.Buscar(p => p.Identifacao.Nome == request.Nome && p.Id != request.Id); if (perfilExistente.Any()) { await _mediator.Publish(new DomainNotification(request.GetType().Name, $"Um perfil com o nome {request.Nome} já existe.")); return(await Task.FromResult(CommandResponse.Fail)); } _perfilRepository.Atualizar(perfil); if (await Commit()) { await _mediator.Send(new AtribuirPermissaoCommand(request.Id, request.Atribuicoes)); await _mediator.Publish(new PerfilAtualizadoEvent(perfil)); } return(await Task.FromResult(CommandResponse.Ok)); }
public async Task <bool> DeletarPermissaoAsync(Permissao permissao) { var perfilComPermissao = await _perfilRepository.Buscar(p => p.Atribuicoes.Where(per => per.PermissaoId == permissao.Id).Any()); if (!perfilComPermissao.Any()) { _permissaoRepository.Deletar(permissao); return(await Task.FromResult(true)); } await _mediator.Publish(new DomainNotification(GetType().Name, "Não foi possível deletar esta permissão, pois a mesma está em uso.")); return(await Task.FromResult(false)); }
public List <Perfil> BuscarTodosPerfisAtivos() { var result = _perfilRepository.Buscar(x => x.FlAtivo).OrderBy(x => x.NmPerfil); return(result.ToList()); }