Пример #1
0
        public virtual IEnumerable <PedidoModelView> Get()
        {
            var usuario = LoggedUser.GetLoggedUser();

            if (usuario == null)
            {
                throw new Exception("Não foi possível obter o usuário logado.");
            }

            var pedidosUsuario = _pedidoServico.BuscarPorUsuario(usuario);

            var pedidosRetorno = new List <PedidoModelView>();

            pedidosUsuario.Select(x => x.Cartao = _cartaoServico.DescriptografarCartao(x.Cartao));

            foreach (var pedido in pedidosUsuario)
            {
                pedidosRetorno.Add(new PedidoModelView(pedido));
            }

            return(pedidosRetorno);
        }
Пример #2
0
        public Resposta <Pedido> Finalizar([FromBody] Pedido entity)
        {
            entity.ListaCompra = _listaCompraServico.BuscarPorId(entity.ListaCompra.Id);

            var pedido = _pedidoServico.ValidarESalvar(entity);

            pedido.Cartao = pedido.Cartao == null ? pedido.Cartao : _cartaoServico.DescriptografarCartao(pedido.Cartao);

            var    cpf = pedido.Usuario.Pessoa.Documentos.FirstOrDefault(x => x.Tipo == (int)TipoDocumento.Cpf)?.Numero;
            string retornoApi;
            var    retorno = new RespostaTransacaoCartaoModelView();

            if (ConfigurationManager.AppSettings["API_REALIZA_TRANSACAO"] == "0")
            {
                retornoApi = "sucesso";
            }
            else
            {
                pedido.Cartao.Decrypted = false;
                pedido.Cartao           = _cartaoServico.DescriptografarCartao(pedido.Cartao);

                switch (ConfigurationManager.AppSettings["API_REALIZA_TRANSACAO_FORMA_PAGAMENTO"])
                {
                case "0":
                    //MobSeg
                    retornoApi = _apiTransacaoCartao.RealizaTransacaoCartao(Convert.ToInt64(cpf?.Replace(".", "").Replace("-", "")), 0,
                                                                            pedido.Cartao?.NumeroSemMascara, pedido.Cartao?.Validade.Replace("/", ""), pedido.Cartao?.Cvv, pedido.ListaCompra.Total.ToString("######.00").Replace(",", "").Replace(".", ""));

                    retorno = new JavaScriptSerializer().Deserialize <RespostaTransacaoCartaoModelView>(retornoApi);
                    break;

                case "1":
                    //PayZen
                    var retornoKeyValue = Aplicacao.apipayzen.ApiPayzenBase.CreatePayment(pedido);
                    retornoApi = retornoKeyValue.Value;
                    retorno    = new RespostaTransacaoCartaoModelView
                    {
                        CodigoResposta = retornoKeyValue.Key,
                        Mensagem       = retornoKeyValue.Value
                    };
                    break;

                default:
                    retornoApi = "sucesso";
                    break;
                }

                pedido.Cartao = _cartaoServico.Criptografar(_cartaoServico.BuscarPorId(pedido.Cartao.Id));
            }

            if (retornoApiInfox.Contains("sucesso"))
            {
                _pedidoServico.AtribuiStatus(pedido.Id, (int)StatusPedido.PagamentoAprovado, pedido.Usuario, retorno.Mensagem, retorno.CodigoResposta);

                _pedidoServico.AtribuiStatus(pedido.Id, (int)StatusPedido.AguardandoConfirmacao, pedido.Usuario, retorno.Mensagem, retorno.CodigoResposta);
            }
            else
            {
                _pedidoServico.AtribuiStatus(pedido.Id, (int)StatusPedido.PagamentoNaoAprovado, pedido.Usuario, retorno.Mensagem, retorno.CodigoResposta);
            }

            var pedidoRetorno = _pedidoServico.BuscarPorId(pedido.Id);

            pedidoRetorno.ListaCompra = _listaCompraServico.AtribuiDescontoAListaCompra(pedidoRetorno.ListaCompra);

            pedidoRetorno.Cartao.Decrypted = false;
            pedidoRetorno.Cartao           = _cartaoServico.DescriptografarCartao(pedidoRetorno.Cartao);

            return(new Resposta <Pedido>
            {
                Mensagem = retornoApiInfox.Contains("sucesso") ? "Compra realizada com sucesso!" : "Falha ao processar o pagamento com a operadora do cartão!",
                ObjetoRetorno = pedidoRetorno,
                TipoMensagem = retornoApiInfox.Contains("sucesso") ? TipoModal.Success : TipoModal.Danger
            });
        }