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?") )); }
public async Task <IActionResult> AtualizarCliente([FromBody] AtualizaClienteCommand request) => CustomResponse(await _mediator.Send(request));