public async Task <CreatePedidoResponse> Create(CreatePedidoRequest request)
        {
            if (request is null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var clienteId = request.ClienteID;

            if (clienteId == null)
            {
                clienteId = CreateCliente(request);
            }

            var pedido = request.ProjectedAs <Pedido>();

            pedido.SetClienteId(clienteId.Value);

            var response = await _service.Create(pedido);

            if (response.IsSuccess)
            {
                _uow.Commit();
            }

            return(response.ProjectedAs <CreatePedidoResponse>());
        }
예제 #2
0
        public async Task <IActionResult> CreatePedido([FromBody] CreatePedidoRequest createPedido)
        {
            var command = new CreatePedidoCommand(createPedido);
            var result  = await Mediator.Send(command);

            return(await ResponseBase(result));
        }
        private int?CreateCliente(CreatePedidoRequest request)
        {
            int?clienteId;

            if (string.IsNullOrEmpty(request.Telefone))
            {
                throw new ArgumentNullException(nameof(request.Telefone), "Telefone é obrigatorio");
            }

            if (string.IsNullOrEmpty(request.Nome))
            {
                throw new ArgumentNullException(nameof(request.Nome), "Nome é obrigatorio");
            }

            if (string.IsNullOrEmpty(request.Endereco))
            {
                throw new ArgumentNullException(nameof(request.Endereco), "Endereco é obrigatorio");
            }

            if (string.IsNullOrEmpty(request.Numero))
            {
                throw new ArgumentNullException(nameof(request.Numero), "Numero é obrigatorio");
            }

            var resp = _clienteService.Create(new
                                              Cliente(request.Nome,
                                                      request.Telefone,
                                                      request.Email,
                                                      request.Endereco,
                                                      request.Numero,
                                                      request.Complemento,
                                                      request.Bairro,
                                                      request.Cidade,
                                                      request.CEP));

            if (resp.IsSuccess)
            {
                _uow.Commit();

                var cliente = _clienteRepository.GetByTelefone(request.Telefone);

                if (cliente != null)
                {
                    clienteId = cliente.Id;
                }
                else
                {
                    throw new ArgumentNullException(nameof(request), "Ocorreu algum erro ao gerar novo cliente");
                }
            }
            else
            {
                throw new ArgumentNullException(nameof(request), "Ocorreu algum erro ao gerar novo cliente");
            }

            return(clienteId);
        }
        public async Task <IActionResult> RealizarPedido([FromBody] CreatePedidoRequest request)
        {
            var commandResult = await _mediator.Send(new CreatePedidoCommand(request));

            if (!commandResult)
            {
                return(BadRequest("Erro ao realizar pedido."));
            }

            return(Created(string.Empty, commandResult));
        }
예제 #5
0
        public async Task <IActionResult> Create([FromBody] CreatePedidoRequest request)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState.GetErrorResponse()));
                }

                var response = await _service.Create(request);

                if (!response.Success)
                {
                    return(BadRequest(response.Erros));
                }

                return(Ok(new { CodPedido = response.CodPedido }));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex?.InnerException?.Message ?? ex.Message));
            }
        }
예제 #6
0
 public CreatePedidoCommand(CreatePedidoRequest pedidoRequest)
 {
     PedidoRequest = pedidoRequest;
 }