예제 #1
0
        public async Task <IActionResult> PostAsync([FromBody] CadastroDeClienteViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = await _servicoDeCadastroDeCliente.RegistrarNovoClienteAsync(viewModel).ConfigureAwait(false);

            if (result.IsFailure)
            {
                return(BadRequest(result));
            }

            var cliente = result.Value;

            return(CreatedAtAction("GetByIdAsync", new { id = cliente.Id }, cliente));
        }
예제 #2
0
        public async Task <IActionResult> PutAsync(Guid id, [FromBody] CadastroDeClienteViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = await _servicoDeCadastroDeCliente.AlterarDadosDoCliente(id, viewModel).ConfigureAwait(false);

            if (result == null)
            {
                return(NotFound());
            }

            if (result.IsFailure)
            {
                return(BadRequest(result));
            }

            return(NoContent());
        }
예제 #3
0
        public async Task <Result <ClienteDTO> > RegistrarNovoClienteAsync(CadastroDeClienteViewModel viewModel)
        {
            var result = Cliente.RegistrarNovoCliente(viewModel.Nome, viewModel.DataDeNascimento, viewModel.Salario);

            if (result.IsFailure)
            {
                return(result.ToResult <ClienteDTO>());
            }

            var cliente = result.Value;

            await _clienteRepository.AdicionarAsync(cliente).ConfigureAwait(false);

            await _unitOfWork.SaveChangesAsync().ConfigureAwait(false);

            return(result.ToResult(new ClienteDTO
            {
                Id = cliente.Id,
                Nome = cliente.Nome,
                DataDeNascimento = cliente.DataDeNascimento,
                Salario = cliente.Salario
            }));
        }
예제 #4
0
        public async Task <Result <ClienteDTO> > AlterarDadosDoCliente(Guid idDoCliente, CadastroDeClienteViewModel viewModel)
        {
            var cliente = await _clienteRepository.ObterPeloIdAsync(idDoCliente).ConfigureAwait(false);

            if (cliente == null)
            {
                return(null);
            }

            var result = cliente.AlterarDados(viewModel.Nome, viewModel.DataDeNascimento, viewModel.Salario);

            if (result.IsFailure)
            {
                return(result.ToResult <ClienteDTO>());
            }

            await _unitOfWork.SaveChangesAsync().ConfigureAwait(false);

            return(result.ToResult(new ClienteDTO
            {
                Id = cliente.Id,
                Nome = cliente.Nome,
                DataDeNascimento = cliente.DataDeNascimento,
                Salario = cliente.Salario
            }));
        }