public ICommandResult Handle(AtualizaClienteCommand command)
        {
            //Gera os Value Objects
            var cpf          = new CPF(command.CpfNumero);
            var emailAddress = new EmailAddress(command.EmailAddress);

            //Valida propriedades que não buscam de repositório
            if (!(cpf.IsValid() & emailAddress.IsValid() & command.EhMaiorDeIdade()))
            {
                return(new ClienteCommandResult());
            }

            //Valida propriedades que buscam de repositório
            if (!(command.PossuiCpfUnico(_clienteRepository) & command.PossuiEmailUnico(_clienteRepository)))
            {
                return(new ClienteCommandResult());
            }

            //Gera a entidade cliente
            var cliente = new Cliente(command.ClienteId, command.Nome, emailAddress, cpf, command.DataNascimento, command.Ativo);

            //Atualiza a entidade junto ao repositório
            _clienteRepository.Atualizar(cliente);

            return(new ClienteCommandResult());
        }
        public static bool PossuiCpfUnico(this AtualizaClienteCommand command, IClienteRepository clienteRepository)
        {
            var clienteId = Guid.Empty;

            var cliente = clienteRepository.ObterPorCpf(command.CpfNumero);

            if (cliente != null)
            {
                clienteId = cliente.ClienteId;
            }

            return(AssertionConcern.IsSatisfiedBy(
                       AssertionConcern.AssertTrue(cliente == null || clienteId == command.ClienteId,
                                                   "CPF já cadastrado! Esqueceu sua senha?")
                       ));
        }
예제 #3
0
 public async Task <IActionResult> AtualizarCliente([FromBody] AtualizaClienteCommand request)
 => CustomResponse(await _mediator.Send(request));