示例#1
0
        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));
        }
示例#3
0
        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());
        }