public PedidoTransacaoViewModel MapearParaPedido(CarrinhoViewModel carrinho, EnderecoViewModel endereco)
        {
            var pedido = new PedidoTransacaoViewModel
            {
                ValorTotal       = carrinho.ValorTotal,
                Itens            = carrinho.Itens,
                Desconto         = carrinho.Desconto,
                VoucherUtilizado = carrinho.VoucherUtilizado,
                VoucherCodigo    = carrinho.Voucher?.Codigo
            };

            if (endereco != null)
            {
                pedido.Endereco = new EnderecoViewModel
                {
                    Logradouro  = endereco.Logradouro,
                    Numero      = endereco.Numero,
                    Bairro      = endereco.Bairro,
                    Cep         = endereco.Cep,
                    Complemento = endereco.Complemento,
                    Cidade      = endereco.Cidade,
                    Estado      = endereco.Estado
                };
            }

            return(pedido);
        }
        public async Task <IActionResult> FinalizarPedido(PedidoTransacaoViewModel pedidoTransacao)
        {
            if (!ModelState.IsValid)
            {
                return(View("Pagamento", _comprasBffService.MapearParaPedido(
                                await _comprasBffService.ObterCarrinho(), null)));
            }

            var retorno = await _comprasBffService.FinalizarPedido(pedidoTransacao);

            if (ResponsePossuiErros(retorno))
            {
                var carrinho = await _comprasBffService.ObterCarrinho();

                if (carrinho.Itens.Count == 0)
                {
                    return(RedirectToAction("Index", "Carrinho"));
                }

                var pedidoMap = _comprasBffService.MapearParaPedido(carrinho, null);
                return(View("Pagamento", pedidoMap));
            }

            return(RedirectToAction("PedidoConcluido"));
        }
        public async Task <ResponseResult> FinalizarPedido(PedidoTransacaoViewModel pedidoTransacao)
        {
            var pedidoContent = ObterConteudo(pedidoTransacao);

            var response = await _httpClient.PostAsync("/compras/pedido/", pedidoContent);

            if (!TratarErrosResponse(response))
            {
                return(await DeserializarObjetoResponse <ResponseResult>(response));
            }

            return(RetornoOk());
        }