//Páginas
        public IActionResult Menu()
        {
            try
            {
                var carrinho = _reposCarrinho.Buscar(_sessao.UsuarioSessao().IdCliente);
                var produtos = new List <Produto>();

                foreach (var item in carrinho)
                {
                    produtos.Add(_reposProduto.Buscar(item.IdProduto));
                }

                ViewBag.Quantidade = carrinho.ToDictionary(i => i.IdProduto, i => i.Quantidade);

                ViewBag.Endereco = _reposCliente.BuscaEndereco(_sessao.UsuarioSessao().IdCliente);
                ViewBag.Estados  = new string[]
                {
                    "AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA",
                    "MG", "MS", "MT", "PA", "PB", "PE", "PI", "PR", "RJ", "RN",
                    "RO", "RR", "RS", "SC", "SE", "SP", "TO"
                };

                return(View(produtos));
            }
            catch (Exception erro)
            {
                GerarLogErro(erro, (byte)Global.Entidade.Carrinho, (byte)Global.Acao.Visualizar);
                throw new Exception(Global.Mensagem.FalhaBanco);
            }
        }
Esempio n. 2
0
        public IActionResult PagamentoBoleto(EnderecoCliente endereco, Frete frete)
        {
            try
            {
                var carrinho = _reposCarrinho.Buscar(_sessao.UsuarioSessao().IdCliente);
                var produtos = new List <Produto>();

                var total = 0.0F;

                foreach (var item in carrinho)
                {
                    var produto = _reposProduto.Buscar(item.IdProduto);
                    produtos.Add(produto);

                    total += produto.Valor * item.Quantidade;
                }

                total += frete.Valor;

                var transacao = PreparaTranscao(endereco, frete, produtos, carrinho);

                transacao.PaymentMethod = PaymentMethod.Boleto;
                transacao.Amount        = Convert.ToInt32(total.ToString("C").Replace("R$", "").Replace(".", "").Replace(",", ""));

                transacao.Save();

                if (transacao.Id != "0")
                {
                    var pedido = new Pedido
                    {
                        IdTransacao     = Convert.ToUInt32(transacao.Id),
                        FormaPagamento  = (byte)Global.Pagamento.Boleto,
                        Total           = total,
                        DataCriacao     = DateTime.Now,
                        DataAtualizacao = DateTime.Now,
                        Situacao        = (byte)Global.Pedido.Aguardando,

                        Boleto = new Boleto
                        {
                            DataExpiracao = Convert.ToDateTime(transacao.BoletoExpirationDate),
                            Url           = transacao.BoletoUrl,
                            CodigoBarras  = transacao.BoletoBarcode
                        },

                        Endereco = new EnderecoPedido
                        {
                            Nome        = endereco.Nome,
                            Cep         = endereco.Cep,
                            Logradouro  = endereco.Logradouro,
                            Numero      = endereco.Numero,
                            Bairro      = endereco.Bairro,
                            Cidade      = endereco.Cidade,
                            Uf          = endereco.Uf,
                            Complemento = endereco.Complemento ?? ""
                        }
                    };

                    pedido.Cliente = _reposCliente.Buscar(_sessao.UsuarioSessao().IdCliente);

                    pedido.Frete = frete;

                    pedido.Produto = new List <ProdutoHistorico>();

                    foreach (var item in produtos)
                    {
                        pedido.Produto.Add(new ProdutoHistorico
                        {
                            IdProduto       = item.IdProduto,
                            IdUsuario       = item.IdUsuario,
                            Nome            = item.Nome,
                            Valor           = item.Valor,
                            Situacao        = (byte)Global.Produto.Aguardando,
                            CodRastreamento = "",
                            PrazoEntrega    = Convert.ToDateTime("0001/01/01"),
                            DataAtualizacao = DateTime.Now,
                            Quantidade      = carrinho.FirstOrDefault(c =>
                                                                      c.IdProduto == item.IdProduto).Quantidade
                        });
                    }

                    _reposCarrinho.RemoverTodos(_sessao.UsuarioSessao().IdCliente);

                    if (_reposPedido.Registrar(pedido) > 0)
                    {
                        GerarLog((byte)Global.Entidade.Pedido, (byte)Global.Acao.Inserir, pedido.IdPedido);
                        return(Json(Convert.ToInt32(transacao.Id)));
                    }

                    return(BadRequest($"{Global.Mensagem.FalhaPedido} {transacao.Id}"));
                }

                return(BadRequest(Global.Mensagem.FalhaTransacao));
            }
            catch (Exception erro)
            {
                GerarLogErro(erro, (byte)Global.Entidade.Pedido, (byte)Global.Acao.Inserir);
                return(BadRequest(Global.Mensagem.FalhaBanco));
            }
        }