Exemplo n.º 1
0
        private void AtualizarVendaBilheteria(BD bd, EstruturaVenda venda)
        {
            try
            {
                string nota = string.Empty;
                if (oProcessamento.oPagamento.TipoPagamento == EstruturaPagamento.enumTipoPagamento.Adyen)
                {
                    nota = AdyenStatic.Fields.NotaFiscal;
                }
                else
                {
                    nota = oProcessamento.oPagamento.oSitef.CupomFiscal;
                }

                oVendaBilheteria.AtualizarPagamentoProcessado(bd, venda.ID, nota);
                if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor)
                {
                    SalvarLog.Salvar("Pagamento e Nota fiscal Atualizados.", Enumeradores.TipoEntrada.Informacao, SalvarLog.Events.Transacoes);
                }
            }
            catch (Exception ex)
            {
                if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor)
                {
                    SalvarLog.SalvarErro("Não foi possível atualizar o Pagamento e Nota Fiscal.", ex.Message, SalvarLog.Events.Transacoes);
                }
                throw ex;
            }
        }
Exemplo n.º 2
0
        private void AtualizarFormaPagamento(BD bd, EstruturaVenda venda)
        {
            oVendaBilheteriaFormaPagamento.Ler(venda.FormaPagamento.VendaBilheteriaFormaPagamentoID);

            if (oProcessamento.oPagamento.TipoPagamento == EstruturaPagamento.enumTipoPagamento.Adyen)
            {
                oVendaBilheteriaFormaPagamento.CodigoRespostaVenda.Valor = oProcessamento.oPagamento.oAdyen.CodigoReferencia;
                oVendaBilheteriaFormaPagamento.NumeroAutorizacao.Valor   = oProcessamento.oPagamento.oAdyen.CodigoAutenticacao ?? oVendaBilheteriaFormaPagamento.NumeroAutorizacao.Valor;
                oVendaBilheteriaFormaPagamento.Cupom.Valor = AdyenStatic.Fields.NotaFiscal;
            }
            else
            {
                oVendaBilheteriaFormaPagamento.VendaBilheteriaFormaPagamentoTEFID.Valor = oProcessamento.oPagamento.oSitef.ID;
                oVendaBilheteriaFormaPagamento.CodigoRespostaVenda.Valor = oProcessamento.oPagamento.oSitef.CodigoRespostaSitefVenda;
                oVendaBilheteriaFormaPagamento.MensagemRetorno.Valor     = oProcessamento.oPagamento.oSitef.MensagemFinaliza;
                oVendaBilheteriaFormaPagamento.HoraTransacao.Valor       = oProcessamento.oPagamento.oSitef.HoraTransacao;
                oVendaBilheteriaFormaPagamento.DataTransacao.Valor       = oProcessamento.oPagamento.oSitef.DataTransacao;
                oVendaBilheteriaFormaPagamento.CodigoIR.Valor            = oProcessamento.oPagamento.oSitef.CodigoIR;
                oVendaBilheteriaFormaPagamento.NumeroAutorizacao.Valor   = oProcessamento.oPagamento.oSitef.NumeroAutorizacao;
                oVendaBilheteriaFormaPagamento.NSUHost.Valor             = oProcessamento.oPagamento.oSitef.NSUHost;
                oVendaBilheteriaFormaPagamento.NSUSitef.Valor            = oProcessamento.oPagamento.oSitef.NSUSitef;
                oVendaBilheteriaFormaPagamento.Cupom.Valor = oProcessamento.oPagamento.oSitef.CupomFiscal;
                oVendaBilheteriaFormaPagamento.DadosConfirmacaoVenda.Valor = oProcessamento.oPagamento.oSitef.DadosConfirmacao;
                oVendaBilheteriaFormaPagamento.Rede.Valor = oProcessamento.oPagamento.oSitef.RedeRetorno;
                oVendaBilheteriaFormaPagamento.CodigoRespostaTransacao.Valor = oProcessamento.oPagamento.oSitef.CodigoRespostaSitefFinaliza;

                if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor)
                {
                    SalvarLog.Salvar("VendaBilheteriaFormaPagamento Atualizada\n NotaFiscal: " + oProcessamento.oPagamento.oSitef.CupomFiscal, Enumeradores.TipoEntrada.Sucesso, SalvarLog.Events.Transacoes);
                }
            }
            oVendaBilheteriaFormaPagamento.Atualizar(bd);
        }
Exemplo n.º 3
0
        private void SolicitarDocumentos(object objVenda)
        {
            if (!(objVenda is EstruturaVenda))
            {
                return;
            }

            EstruturaVenda venda = (EstruturaVenda)objVenda;

            try
            {
                oVendaBilheteria.Score.Valor = venda.Score;
                oVendaBilheteria.AtualizarStatusAntiFraude(venda.ID, VendaBilheteria.StatusAntiFraude.EmAnalise, venda.Score, venda.RetornoAccertify);

                EstruturaTransacoesDetalhes detalheVendas = oVendaBilheteria.AcompanhamentoIngressos(venda.ID);

                if (ConfigurationManager.AppSettings["CanaisImais"].ToString().Contains(detalheVendas.CanalID.ToString()))
                {
                    email.EnviarSolicitacaoDocumentos_im(venda.Cliente.ID, detalheVendas, ConfiguracaoHammerHead.Instancia.Configuracao.AmbienteDeTestes.Valor);
                }
                else
                {
                    email.EnviarSolicitacaoDocumentos(venda.Cliente.ID, detalheVendas, ConfiguracaoHammerHead.Instancia.Configuracao.AmbienteDeTestes.Valor);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Solicitar Documentos : " + ex.Message);
            }
        }
Exemplo n.º 4
0
        public void EfetuarPagamento(EstruturaVenda venda, string action = "")
        {
            LogUtil.Debug(string.Format("##HammerHead.EfetuandoPagamento## VENDA: {0}, ACTION: {1}", venda.ID, action));
            var success = false;

            var sw = new Stopwatch();

            sw.Start();

            try
            {
                this.ProcessarVenda(venda, action);
                success = true;
            }
            catch (Exception ex)
            {
                LogUtil.Error(string.Format("##HammerHead.EfetuandoPagamento.EXCEPTION## VENDA: {0}, MSG: {1}", venda.ID, ex.Message), ex);
                throw;
            }
            finally
            {
                sw.Stop();
                LogUtil.Debug(string.Format("##HammerHead.EfetuandoPagamento.FINISH## VENDA: {0}, SUCESS: {1}, TEMPO_DECORRIDO_TOTAL: {2} ms", venda.ID, success, sw.ElapsedMilliseconds));
            }
        }
Exemplo n.º 5
0
        public void EnviarSMS(HammerHead.EstruturaVenda venda)
        {
            if (!APIHuman.Ativo)
            {
                return;
            }

            try
            {
                if (string.IsNullOrEmpty(venda.NumeroCelular))
                {
                    return;
                }

                EstruturaEnvioSMS sms = new EstruturaEnvioSMS()
                {
                    Senha      = venda.Senha,
                    DataVenda  = venda.DataVenda.ToShortDateString(),
                    Email      = venda.Cliente.Email,
                    Nome       = venda.Cliente.Nome,
                    Numero     = venda.NumeroCelular,
                    ValorTotal = venda.ValorTotal,
                };

                this.EnviarSms(true, sms);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro: " + ex.Message);
            }
        }
Exemplo n.º 6
0
        public Enumeradores.RetornoProcessamento ProcessarVenda(EstruturaVenda venda)
        {
            LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda## VENDA: {0}", venda));

            this.Venda = venda;
            this.MontarPagamento();

            var retorno = this.Processar();

            venda.RetornoAccertify = this.RetornoAccertify;

            return(retorno);
        }
Exemplo n.º 7
0
        private void Chageback(EstruturaVenda venda)
        {
            try
            {
                LogUtil.Info(string.Format("##HammerHead.Chageback## VENDA: {0}", venda.ID));

                oVendaBilheteria.Score.Valor = venda.Score;
                oVendaBilheteria.AtualizarStatusAntiFraude(venda.ID, VendaBilheteria.StatusAntiFraude.Aprovado, venda.Score, venda.RetornoAccertify);

                LogUtil.Info(string.Format("##HammerHead.Chageback.SUCCESS## VENDA: {0}", venda.ID));
            }
            catch (Exception ex)
            {
                LogUtil.Error(string.Format("##HammerHead.Chageback.EXCEPTION## VENDA: {0}, MSG: {1}", venda.ID, ex.Message), ex);
                SalvarLog.SalvarErro("Erro ao atualizar chargeback: " + venda.ID, ex.Message, SalvarLog.Events.Transacoes);
            }
        }
Exemplo n.º 8
0
        private void Analisar(object objVenda)
        {
            if (!(objVenda is EstruturaVenda))
            {
                return;
            }

            EstruturaVenda venda = (EstruturaVenda)objVenda;

            try
            {
                oVendaBilheteria.Score.Valor = venda.Score;
                oVendaBilheteria.AtualizarStatusAntiFraude(venda.ID, VendaBilheteria.StatusAntiFraude.EmAnalise, venda.Score, venda.RetornoAccertify);
            }
            catch (Exception ex)
            {
                throw new Exception("Analisar : " + ex.Message);
            }
        }
Exemplo n.º 9
0
        private void CancelarSemFraude(object objVenda)
        {
            if (!(objVenda is EstruturaVenda))
            {
                return;
            }

            EstruturaVenda venda = (EstruturaVenda)objVenda;

            try
            {
                oVendaBilheteria.Score.Valor = venda.Score;
                oVendaBilheteria.AtualizarStatusAntiFraude(venda.ID, VendaBilheteria.StatusAntiFraude.Cancelado, venda.Score, venda.RetornoAccertify);
            }
            catch (Exception ex)
            {
                SalvarLog.SalvarErro("Erro ao cancelar a Venda: " + venda.ID, ex.Message, SalvarLog.Events.Transacoes);
            }
        }
Exemplo n.º 10
0
        private void VendaJaCancelada(EstruturaVenda venda, bool fraude = false)
        {
            try
            {
                LogUtil.Info(string.Format("##HammerHead.VendaJaCancelada## VENDA: {0}", venda.ID));

                var statusAntiFraude = fraude ? VendaBilheteria.StatusAntiFraude.Fraude : VendaBilheteria.StatusAntiFraude.Aprovado;

                oVendaBilheteria.Score.Valor = venda.Score;
                oVendaBilheteria.AtualizarStatusAntiFraude(venda.ID, statusAntiFraude, venda.Score, venda.RetornoAccertify);

                LogUtil.Info(string.Format("##HammerHead.VendaJaCancelada.SUCCESS## VENDA: {0}", venda.ID));
            }
            catch (Exception ex)
            {
                LogUtil.Error(string.Format("##HammerHead.VendaJaCancelada.EXCEPTION## VENDA: {0}, MSG: {1}", venda.ID, ex.Message), ex);
                SalvarLog.SalvarErro("Erro ao atualizar venda já cancelada: " + venda.ID, ex.Message, SalvarLog.Events.Transacoes);
            }
        }
Exemplo n.º 11
0
        private void AtualizarVenda(EstruturaVenda venda)
        {
            BD bd = new BD();

            try
            {
                bd.IniciarTransacao();

                this.AtualizarVendaBilheteria(bd, venda);
                this.AtualizarFormaPagamento(bd, venda);

                bd.FinalizarTransacao();
            }
            catch (Exception ex)
            {
                bd.DesfazerTransacao();
                SalvarLog.SalvarErro("Falha ao atualizar a venda", ex.Message, SalvarLog.Events.Transacoes);
            }
            finally
            {
                bd.Fechar();
            }
        }
Exemplo n.º 12
0
        private void AtualizarScore(object objVenda)
        {
            if (!(objVenda is EstruturaVenda))
            {
                return;
            }

            EstruturaVenda venda = (EstruturaVenda)objVenda;

            BD bd = new BD();

            try
            {
                oVendaBilheteria.AtualizarScore(bd, venda.ID, venda.Score, venda.RetornoAccertify.ToString());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                bd.Fechar();
            }
        }
Exemplo n.º 13
0
        public static XmlDocument GerarXMLVenda(HammerHead.EstruturaVenda Venda)
        {
            BD bd = new BD();

            try
            {
                bd.Consulta(string.Format(@"
                       SELECT
	                        vb.Senha AS Senha, vb.ID AS VendaBilheteriaID, vb.Senha, vb.Status, vb.DataVenda, vb.ValorTotal, vb.TaxaConvenienciaValorTotal, vb.TaxaEntregaValor, vb.IP, cn.Nome AS Canal,
	                        c.ID AS ClienteID, c.CPF AS CPFCliente, c.DataCadastro, c.Nome AS NomeCliente, c.Email AS EmailCliente, c.DDDTelefone + c.Telefone AS TelefoneCliente, c.EnderecoCliente, c.CidadeCliente, c.EstadoCliente, c.CEPCliente, 'BR' AS PaisCliente,
	                        ce.Nome, ce.CPF, ce.Endereco, ce.Cidade, ce.Estado, ce.CEP, e.Nome AS Entrega, e.PrazoEntrega, e.ID AS EntregaID,
	                        CASE WHEN ea.ID IS NOT NULL
		                        THEN ea.Data + '235959'
		                        ELSE
			                        CONVERT(VARCHAR,DateAdd(Day, e.PrazoEntrega, CONVERT(DATETIME, SUBSTRING(vb.DataVenda, 0 ,9), 112)), 112) + '235959'
	                        END AS DataEntrega, VendaCancelada
	                        FROM tVendaBilheteria vb (NOLOCK)
	                        INNER JOIN tCaixa cx (NOLOCK) ON cx.ID = vb.CaixaID
	                        INNER JOIN tLoja l (NOLOCK) ON l.ID = cx.LojaID
	                        INNER JOIN tCanal cn (NOLOCK) ON cn.ID = l.CanalID
	                        INNER JOIN tCliente c (NOLOCK) ON vb.ClienteID = c.ID
	                        LEFT JOIN tClienteEndereco ce (NOLOCK) ON ce.ID = vb.ClienteEnderecoID
	                        INNER JOIN tEntregaControle ec (NOLOCK) ON ec.ID = vb.EntregaControleID
	                        INNER JOIN tEntrega e (NOLOCK) ON e.ID = ec.EntregaID 
	                        LEFT JOIN tEntregaAgenda ea (NOLOCK) ON ea.ID = vb.EntregaAgendaID
	                        WHERE 
								vb.ID = {0}
                ", Venda.ID));

                if (!bd.Consulta().Read() || bd.LerBoolean("VendaCancelada"))
                {
                    throw new VendaCanceladaException(Venda.ID);
                }

                var transaction = new List <order>();

                string forcestatus = string.Empty;

                if (!string.IsNullOrEmpty(Venda.AccertifyForceStatus))
                {
                    forcestatus = Venda.AccertifyForceStatus == ((char)ForceStatusType.APPROVE).ToString() ? ForceStatusType.APPROVE.ToString() : ForceStatusType.REVIEW.ToString();
                }

                do
                {
                    transaction.Add(new order()
                    {
                        orderNumber          = bd.LerString("Senha"),
                        orderType            = "Sale",
                        orderDateTime        = bd.LerDateTimeAccertify("DataVenda"),
                        totalAmount          = bd.LerDecimal("ValorTotal").ToString("#0.00"),
                        totalSalesTax        = bd.LerDecimal("TaxaConvenienciaValorTotal").ToString("#0.00"),
                        totalShippingCharges = bd.LerDecimal("TaxaEntregaValor").ToString("#0.00"),
                        ipAddress            = bd.LerString("IP"),
                        salesChannel         = bd.LerString("Canal").RemoveAcentos().ToUpper(),
                        ForceStatus          = forcestatus,

                        paymentInformation = new paymentInformation()
                        {
                            billingFullName       = Venda.FormaPagamento.NomeCartao,
                            billingFirstName      = Venda.FormaPagamento.NomeCartao.Split(' ').FirstOrDefault(),
                            billingLastName       = Venda.FormaPagamento.NomeCartao.Split(' ').LastOrDefault(),
                            cardNumber            = Venda.Cartao.NumeroCartao,
                            cardExpireDate        = !string.IsNullOrEmpty(Venda.Cartao.DataVencimento) ? Venda.Cartao.DataVencimento.Substring(2, 2) + "/" + Venda.Cartao.DataVencimento.Substring(0, 2) : string.Empty,
                            cardAuthorizationCode = "approved", //Venda.Cartao.CodigoSeguranca,
                            paymentType           = Venda.FormaPagamento.Bandeira,
                            cardType = Venda.FormaPagamento.Bandeira,
                        },
                        failedCCInformation = new failedCCInformation()
                        {
                        },
                        memberInformation = new memberInformation()
                        {
                            memberID         = bd.LerInt("ClienteID").ToString(),
                            memberCPF        = bd.LerString("CPFCliente").ToString(),
                            membershipDate   = bd.LerDateTimeAccertify("DataCadastro"),
                            memberFullName   = bd.LerString("NomeCliente").RemoveAcentos().ToUpper(),
                            memberFirstName  = bd.LerString("NomeCliente").Split(' ').FirstOrDefault().RemoveAcentos().ToUpper(),
                            memberLastName   = bd.LerString("NomeCliente").Split(' ').LastOrDefault().RemoveAcentos().ToUpper(),
                            memberPostalCode = bd.LerString("CEPCliente").AsCEP(),
                            memberEmail      = bd.LerString("EmailCliente").RemoveAcentos().ToUpper(),
                            memberPhone      = bd.LerString("TelefoneCliente").RemoveAcentos().ToUpper(),
                            memberAddress    = bd.LerString("EnderecoCliente").RemoveAcentos().ToUpper(),
                            memberCity       = bd.LerString("CidadeCliente").RemoveAcentos().ToUpper(),
                            memberRegion     = bd.LerString("EstadoCliente").RemoveAcentos().ToUpper(),
                            memberCountry    = "BR",
                            registeredMember = "Y",
                            guest            = "N",
                        },
                        shippingInformation = new shippingInformation()
                        {
                            shippingFullName   = bd.LerString("Nome").ToUpper(),
                            shippingCPF        = bd.LerString("CPF"),
                            shippingFirstName  = bd.LerString("Nome").Split(' ').FirstOrDefault().RemoveAcentos().ToUpper(),
                            shippingLastName   = bd.LerString("Nome").Split(' ').LastOrDefault().RemoveAcentos().ToUpper(),
                            shippingAddress    = bd.LerString("Endereco").RemoveAcentos().ToUpper(),
                            shippingCity       = bd.LerString("Cidade").RemoveAcentos().ToUpper(),
                            shippingRegion     = bd.LerString("Estado").RemoveAcentos().ToUpper(),
                            shippingPostalCode = bd.LerString("CEP").AsCEP(),
                            shippingCountry    = bd.LerString("CEP").Length == 0 ? string.Empty : "BR",
                            shippingMethod     = bd.LerString("Entrega").RemoveAcentos(),
                            shippingDeadline   = bd.LerString("CEP").Length == 0 ? string.Empty : bd.LerDateTimeAccertify("DataEntrega")
                        }
                    });
                } while (bd.Consulta().Read());

                bd.FecharConsulta();

                bd.Consulta(string.Format(@"
	                        SELECT
		                            vb.ID, e.ID AS EventoID, e.Nome AS Evento, ap.Horario, l.Nome AS Local, l.Logradouro, l.Cidade, l.Estado, l.CEP, p.ID AS PrecoID, 
                                    p.Valor, COUNT(DISTINCT i.ID) AS Quantidade, et.Nome AS Categoria, es.Descricao AS Genero, vbi.TaxaConvenienciaValor, i.SessionID
		                        FROM tVendaBilheteria vb (NOLOCK)
		                        INNER JOIN tIngressoLog il (NOLOCK) ON il.VendaBilheteriaID = vb.ID
		                        INNER JOIN tIngresso i (NOLOCK) ON i.ID = il.IngressoID
		                        INNER JOIN tEvento e (NOLOCK) ON e.ID = i.EventoID
		                        INNER JOIN tApresentacao ap (NOLOCK) ON ap.ID = i.ApresentacaoID
		                        INNER JOIN tLocal l (NOLOCK) ON l.ID = e.LocalID
		                        INNER JOIN tPreco p (NOLOCK) ON p.ID = il.PrecoID
		                        LEFT JOIN tEventoSubtipo es (NOLOCK) ON es.ID = e.EventoSubTipoID
                                LEFT JOIN tEventoTipo et (NOLOCK) ON et.ID = es.EventoTipoID
		                        INNER JOIN tVendaBilheteriaItem vbi (NOLOCK) ON vbi.ID = il.VendaBilheteriaItemID
		                            WHERE vb.ID = {0} AND i.Status IN('{1}', '{2}', '{3}') AND il.Acao = 'V' 
		                        GROUP BY vb.ID, e.ID, e.Nome, ap.Horario, l.Nome, l.Logradouro, l.Cidade, l.Estado, l.CEP, p.ID, p.Valor, et.Nome, es.Descricao, vbi.TaxaConvenienciaValor, i.SessionID
                                ORDER BY vb.ID, p.ID", Venda.ID, Ingresso.VENDIDO, Ingresso.ENTREGUE, Ingresso.IMPRESSO));

                int vendaID = 0;
                var venda   = new order();

                while (bd.Consulta().Read())
                {
                    if (vendaID != bd.LerInt("ID"))
                    {
                        vendaID = bd.LerInt("ID");
                        venda   = transaction.Where(c => c.orderNumber.EndsWith(vendaID.ToString())).FirstOrDefault();
                        if (venda == null)
                        {
                            continue;
                        }
                    }

                    venda.eventDetails.Add(new eventinfo()
                    {
                        eventID          = bd.LerInt("EventoID").ToString(),
                        eventDateTime    = bd.LerDateTimeAccertify("Horario"),
                        eventLocation    = bd.LerString("Local").RemoveAcentos().ToUpper(),
                        eventAddress     = bd.LerString("Logradouro").RemoveAcentos().ToUpper(),
                        eventPostalCode  = bd.LerString("CEP").AsCEP(),
                        eventCity        = bd.LerString("Cidade").RemoveAcentos().ToUpper(),
                        eventState       = bd.LerString("Estado").RemoveAcentos().ToUpper(),
                        eventCountry     = "BR",
                        ticketPrice      = bd.LerDecimal("Valor").ToString("#0.00"),
                        ticketQuantity   = bd.LerInt("Quantidade").ToString(),
                        eventCategory    = bd.LerString("Categoria").RemoveAcentos().ToUpper(),
                        eventGenre       = bd.LerString("Genero").RemoveAcentos().ToUpper(),
                        eventTax         = bd.LerDecimal("TaxaConvenienciaValor").ToString("#0.00"),
                        eventDescription = bd.LerString("Evento"),
                    });


                    venda.SessionID = bd.LerString("SessionID");
                }

                XmlSerializer ser = new XmlSerializer(transaction.GetType());
                XmlDocument   xml = new XmlDocument();

                using (MemoryStream fs = new MemoryStream())
                {
                    ser.Serialize(fs, transaction);
                    fs.Position = 0;
                    var    sr    = new StreamReader(fs);
                    string myStr = sr.ReadToEnd().Replace("eventinfo", "event").Replace("ArrayOfOrder", "transactions");

                    xml.LoadXml(myStr);
                }

                return(xml);
            }
            finally
            {
                bd.Fechar();
            }
        }
Exemplo n.º 14
0
        private void Aprovar(object objVenda)
        {
            var sw = new Stopwatch();

            sw.Start();

            if (!(objVenda is EstruturaVenda))
            {
                LogUtil.Debug(string.Format("##HammerHead.Aprovar.ERRO## OBJ_VENDA: {0}", objVenda));
                return;
            }

            EstruturaVenda venda = (EstruturaVenda)objVenda;

            try
            {
                LogUtil.Debug(string.Format("##HammerHead.Aprovar## VENDA: {0}", venda.ID));

                var listaIngressos = new List <IngressoImpressao>();
                var status         = VendaBilheteria.StatusAntiFraude.Aprovado;

                oVendaBilheteria.Score.Valor = venda.Score;
                oVendaBilheteria.AtualizarStatusAntiFraude(venda.ID, status, venda.Score, venda.RetornoAccertify);
                LogUtil.Debug(string.Format("##HammerHead.Aprovar.AtualizarStatusAntiFraudeCalled## VENDA: {0}, TEMPO_DECORRIDO: {1} ms", venda.ID, sw.ElapsedMilliseconds));

                EstruturaTransacoesDetalhes detalheVendas = oVendaBilheteria.AcompanhamentoIngressos(venda.ID);
                LogUtil.Debug(string.Format("##HammerHead.Aprovar.AcompanhamentoIngressosCalled## VENDA: {0}, TEMPO_DECORRIDO: {1} ms", venda.ID, sw.ElapsedMilliseconds));

                LogUtil.Debug(string.Format("##HammerHead.Aprovar## VENDA: {0}, IMPRESSÃO_INTERNET: {1}", venda.ID, detalheVendas.PermitirImpressaoInternet));
                if (detalheVendas.PermitirImpressaoInternet)
                {
                    listaIngressos = ingressos.PesquisaVendaBilheteria(detalheVendas.VendaBilheteriaID);
                    LogUtil.Debug(string.Format("##HammerHead.Aprovar.PesquisaVendaBilheteriaCalled## VENDA: {0}, TEMPO_DECORRIDO: {1} ms", venda.ID, sw.ElapsedMilliseconds));
                }

                if (listaIngressos.Count > 0)
                {
                    LogUtil.Debug(string.Format("##HammerHead.Aprovar.EnviarEmail## VENDA: {0}, MSG: {1}", venda.ID, "EnviarConfirmacaoCompraComIngresso"));

                    if (
                        ConfigurationManager.AppSettings["CanaisImais"].ToString()
                        .Contains(detalheVendas.CanalID.ToString()))
                    {
                        email.EnviarConfirmacaoCompraComIngresso_im(venda.Cliente.ID, detalheVendas, listaIngressos,
                                                                    ConfiguracaoHammerHead.Instancia.Configuracao.AmbienteDeTestes.Valor);
                    }
                    else
                    {
                        email.EnviarConfirmacaoCompraComIngresso(venda.Cliente.ID, detalheVendas, listaIngressos,
                                                                 ConfiguracaoHammerHead.Instancia.Configuracao.AmbienteDeTestes.Valor);
                    }
                }
                else
                {
                    LogUtil.Debug(string.Format("##HammerHead.Aprovar.EnviarEmail## VENDA: {0}, MSG: {1}", venda.ID,
                                                "EnviarConfirmacaoCompra"));

                    if (
                        ConfigurationManager.AppSettings["CanaisImais"].ToString()
                        .Contains(detalheVendas.CanalID.ToString()))
                    {
                        email.EnviarConfirmacaoCompra_im(venda.Cliente.ID, detalheVendas,
                                                         ConfiguracaoHammerHead.Instancia.Configuracao.AmbienteDeTestes.Valor);
                    }
                    else
                    {
                        email.EnviarConfirmacaoCompra(venda.Cliente.ID, detalheVendas,
                                                      ConfiguracaoHammerHead.Instancia.Configuracao.AmbienteDeTestes.Valor);
                    }
                }

                LogUtil.Debug(string.Format("##HammerHead.Aprovar.EmailConfirmacaoEnviado## VENDA: {0}, TEMPO_DECORRIDO: {1} ms", venda.ID, sw.ElapsedMilliseconds));
            }
            catch (Exception ex)
            {
                LogUtil.Error(
                    string.Format("##HammerHead.Aprovar.EXCEPTION## VENDA: {0}, MSG: {1}", venda.ID, ex.Message), ex);
                throw new Exception("Erro ao Aprovar : " + ex.Message);
            }
            finally
            {
                sw.Stop();
                LogUtil.Debug(string.Format("##HammerHead.Aprovar.FINISHED## VENDA: {0}, TEMPO_DECORRIDO: {1}", venda.ID, sw.ElapsedMilliseconds));
            }
        }
Exemplo n.º 15
0
        public void ProcessarVenda(EstruturaVenda venda, string action = "")
        {
            var sw = new Stopwatch();

            sw.Start();

            if (venda.VendaCancelada)
            {
                this.oProcessamento.RetornoAccertify = Enumeradores.RetornoAccertify.VendaJaCancelada;
            }

            var retorno = oProcessamento.ProcessarVenda(venda);

            LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));

            switch (retorno)
            {
            case Enumeradores.RetornoProcessamento.Processado:
                this.Aprovar(venda);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.Aprovar.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;

            case Enumeradores.RetornoProcessamento.CancelarAccertify:
                this.Fraude(venda);
                //cancelar ingressos
                oVendaBilheteria.CancelarVenda(venda, true);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.CancelarVenda.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;

            case Enumeradores.RetornoProcessamento.AguardarAccertify:
            case Enumeradores.RetornoProcessamento.Timeout:
                this.Analisar(venda);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.Analisar.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;

            case Enumeradores.RetornoProcessamento.SolicitarDocumentos:
                this.SolicitarDocumentos(venda);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.SolicitarDocumentos.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;

            case Enumeradores.RetornoProcessamento.CancelarSemFraude:
                this.CancelarSemFraude(venda);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.CancelarSemFraude.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;

            case Enumeradores.RetornoProcessamento.CartaoInvalido:
                LogUtil.Error(string.Format("##HammerHead.ProcessandoVenda.ERROR## VENDA: {0}, RETORNO_ACCERTIFY: {1}", venda.ID, retorno));
                break;

            case Enumeradores.RetornoProcessamento.Chargeback:
                this.Chageback(venda);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.Chageback.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;

            case Enumeradores.RetornoProcessamento.VendaJaCancelada:
                var fraude = (action == "REJECT");
                this.VendaJaCancelada(venda, fraude);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.VendaJaCancelada.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                oVendaBilheteria.CancelarVenda(venda, fraude);
                break;

            case Enumeradores.RetornoProcessamento.Bypass:
            default:
                this.AtualizarScore(venda);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.AtualizarScore.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;
            }

            var saveLog = ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor;

            LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.BeforeLog## VENDA: {0}, SALVAR_LOG: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, saveLog, sw.ElapsedMilliseconds));

            if (saveLog)
            {
                SalvarLog.Salvar(string.Format("Venda processada HammerHead. \n Venda: {0} \nScore:{1}\nRecommendation: {2}", venda.Senha, venda.Score.ToString(), venda.RetornoAccertify.ToString()), Enumeradores.TipoEntrada.Sucesso);
            }

            sw.Stop();
            LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.FINISH## VENDA: {0}, TEMPO_DECORRIDO_TOTAL: {1} ms", venda.ID, sw.ElapsedMilliseconds));
        }