public async Task <CommandResponse> Handle(AtribuirPermissaoCommand request, CancellationToken cancellationToken) { var perfil = await this.BuscarPerfilComPermissoes(request.PerfilId, _perfilRepository); if (perfil == null) { await _mediator.Publish(new DomainNotification(request.GetType().Name, "Perfil não encontrado.")); 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); } } if (await Commit()) { await _mediator.Publish(new PermissaoAssinadaEvent(perfil)); } return(await Task.FromResult(CommandResponse.Ok)); }
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)); }