Пример #1
0
        public IHttpActionResult ObterTodos(String email, String ip, String hash, String tipo = "0")
        {
            var hashGerado = DomainUtil.GerarHashMD5(String.Concat(email, email, ip, ip));

            if (tipo == "0")
            {
                if (hashGerado != hash)
                {
                    var atividadeAtual = new Atividade()
                    {
                        Usuario = null, IP = ip, Data = DateTime.Now, TipoAtividade = Convert.ToInt32(TipoAtividade.PossivelTentativaDeHack), Origem = Convert.ToInt32(OrigemAcesso.Web), Descricao = "O usuário com o e-mail " + email + " tentou acessar a consulta de serviço com a Hash errada."
                    };

                    container.Resolve <AtividadeCRUDService>().Salvar(atividadeAtual);

                    return(Json(new { erro = "S", mensagem = "Hash incorreto, esta tentativa de consulta foi logada e enviada ao Administrador." }));
                }
            }

            List <ServicoVO> servicosVO = null;

            servicosVO = container.Resolve <IServicoRepository>().ObterTodosAtivos();

            if (servicosVO != null)
            {
                var atividadeAtual = new Atividade()
                {
                    Usuario = null, IP = ip, Data = DateTime.Now, TipoAtividade = Convert.ToInt32(TipoAtividade.ConsultaServico), Origem = Convert.ToInt32(OrigemAcesso.Web), Descricao = "O usuário com o e-mail " + email + " solicitou consulta de serviços."
                };

                container.Resolve <AtividadeCRUDService>().Salvar(atividadeAtual);
            }

            return(Json(new { erro = "N", itens = servicosVO != null ? servicosVO : new List <ServicoVO>() }));
        }
Пример #2
0
        public IHttpActionResult ObterHistoricoAssinaturas(String email, String ip, String hash, String valor)
        {
            List <AssinaturaVO> assinaturas = null;

            try
            {
                if (!String.IsNullOrEmpty(email) && !String.IsNullOrEmpty(hash))
                {
                    if (hash != DomainUtil.GerarHashMD5(String.Concat(email, email, ip)))
                    {
                        return(null);
                    }

                    assinaturas = container.Resolve <IAssinaturaRepository>().ObterTodasAssinaturasVOPorEmail(email);
                    var usuario        = container.Resolve <IUsuarioRepository>().ObterPeloEmail(email);
                    var atividadeAtual = new Atividade()
                    {
                        Usuario = usuario, IP = ip, Data = DateTime.Now, TipoAtividade = Convert.ToInt32(TipoAtividade.HistoricoAssinatura), Origem = Convert.ToInt32(OrigemAcesso.Web), Descricao = "O usuário com o e-mail " + email + " solicitou histórico de assinaturas."
                    };

                    container.Resolve <AtividadeCRUDService>().Salvar(atividadeAtual);
                }
            }

            catch (Exception ex)
            {
                container.Resolve <ErroSistemaCRUDService>().Salvar(ex);
                String mensagem        = !String.IsNullOrEmpty(ex.Message) ? ex.Message : String.Empty;
                String mensagemInterna = ex.InnerException != null && String.IsNullOrEmpty(ex.InnerException.Message) ? ex.InnerException.Message : String.Empty;
                String assunto         = "Erro em ObterHistoricoAssinaturas na API da Subcode 23";
                String mensagem2       = String.Format("Exceção: {0} \n Exceção interna: {1}, \n Data/Hora: {2} \n Email: {3}: ", mensagem, mensagemInterna, DateTime.Now, email);

                container.Resolve <IEmailService>().EnviarEmail(Constantes.EMAIL_DESTINATARIO, Constantes.EMAIL_REMETENTE, "Suporte ", assunto, mensagem2, false);

                return(Json(new { erro = "S", mensagem = "Ocorreu um erro inesperado ao obter o histórico de assinaturas, não se preocupe, o suporte já foi acionado e vai resolver o problema e te informar assim que for verificado." }));
            }

            return(Json(assinaturas != null ? assinaturas : new List <AssinaturaVO>()));
        }
Пример #3
0
        public IHttpActionResult ObterPessoaFisicaPeloCPF(RequisicaoConsultaVO requisicao)
        {
            Boolean usaCredito = false;
            var     erro       = new ErroConsulta();

            erro.Cpfcnpj    = requisicao.cpf;
            erro.Email      = requisicao.email;
            erro.Aplicativo = requisicao.aplicativo;
            erro.Data       = DateTime.Now;
            erro.Versao     = requisicao.versao;
            erro.Ip         = requisicao.ip;

            var consultaVO = new ConsultaCPFCNPJVO();

            consultaVO.CPF    = requisicao.cpf;
            consultaVO.Email  = requisicao.email;
            consultaVO.Versao = requisicao.versao;
            consultaVO.IP     = requisicao.ip;
            consultaVO.Hash   = requisicao.hash;

            var hashGerado = DomainUtil.GerarHashMD5(String.Concat(requisicao.cpf, requisicao.email, requisicao.ip, requisicao.cpf));

            consultaVO.Hash = requisicao.senha;
            var validacao = container.Resolve <ValidacaoConsultaCPFService>();

            validacao.Validate(consultaVO);

            if (!validacao.TemErro)
            {
                var pessoaFisicaRepository = container.Resolve <IPessoaFisicaRepository>();

                var pessoa  = pessoaFisicaRepository.ObterUltimaConsultaPessoaFisicaPeloCPF(requisicao.cpf);
                var usuario = container.Resolve <IUsuarioRepository>().ObterPeloEmail(requisicao.email);
                if ((TipoAplicativoEnum)requisicao.aplicativo == TipoAplicativoEnum.Android)
                {
                    var telefoneUsuarioRepo = container.Resolve <ITelefoneUsuarioRepository>();
                    var telefone            = telefoneUsuarioRepo.ObterTelefonePorUsuarioEIMEI(usuario.Id, requisicao.imei);
                    if (telefone != null && requisicao.imei != telefone.IMEI)
                    {
                        return(Json(new { erro = "S", mensagem = String.Format("Já existe um telefone com outro IMEI cadastrado para esta conta. Fabricante: {0} Modelo: {1} - Caso tenha trocado de aparelho contate o desenvolvedor para fazer a atualização de IMEI do seu cadastro.", telefone.Fabricante, telefone.Modelo) }));
                    }
                    else
                    {
                        TelefoneUsuario tel = new TelefoneUsuario();
                        tel.DataCadastro = DateTime.Now;
                        tel.Fabricante   = requisicao.fabricante;
                        tel.IMEI         = requisicao.imei;
                        tel.Modelo       = requisicao.modelo;
                        tel.Numero       = requisicao.numero;
                        tel.Operadora    = requisicao.operadora;
                        tel.Usuario      = usuario;
                    }
                }

                if (pessoa != null && !String.IsNullOrEmpty(pessoa.Nome) && pessoa.Vitalicio != "S")
                {
                    if (pessoa.DataCadastro.Date.AddDays(+90) < DateTime.Now.Date)
                    {
                        ILimiteUsuarioRepository limiteRepository = container.Resolve <ILimiteUsuarioRepository>();
                        var limite = limiteRepository.ObterLimiteUsuarioPeloEmail(requisicao.email);

                        if (limite != null)
                        {
                            ICreditoRepository creditoRepo = container.Resolve <ICreditoRepository>();
                            var credito = creditoRepo.ObterCreditoPeloUsuario(Convert.ToInt32(usuario.Id));
                            if (credito == null)
                            {
                                if (limite.Quantidade >= limite.LimiteConsultas && usuario.Especial != "S")
                                {
                                    return(Json(new { erro = "S", mensagem = String.Format("O seu usuário já atingiu o limite diário de consultas, que são {0} consultas, caso queira fazer novas consultas aguarde até o próximo dia ou adquira um pacote de consultas avulsas.", limite.LimiteConsultas) }));
                                }
                            }
                            else
                            {
                                usaCredito = true;
                            }
                        }
                        else
                        {
                            usaCredito = true;
                        }

                        pessoa = pessoaFisicaRepository.ObterNovaPessoaPeloCPF(requisicao.cpf);
                        if (pessoa.Id == 0)
                        {
                            pessoa.Id = (Int32?)null;
                        }

                        var logConsulta = new LogConsulta();
                        logConsulta.Origem       = Convert.ToInt32(OrigemConsultaEnum.SeekLoc);
                        logConsulta.Tipo         = Convert.ToInt32(TipoConsultaEnum.CPF);
                        logConsulta.Usuario      = usuario;
                        logConsulta.CPFCNPJ      = requisicao.cpf;
                        logConsulta.DataCadastro = DateTime.Now;
                        logConsulta.TemResultado = (pessoa != null && !String.IsNullOrEmpty(pessoa.Nome)) ? "S" : "N";
                        container.Resolve <LogConsultaCRUDService>().Salvar(logConsulta);

                        if (pessoa != null)
                        {
                            var atividadeAtual = new Atividade()
                            {
                                Usuario = usuario, IP = requisicao.ip, Data = DateTime.Now, TipoAtividade = Convert.ToInt32(TipoAtividade.ConsultaPessoaFisicaCPF), Origem = Convert.ToInt32(OrigemAcesso.Web), Descricao = "O usuário com o e-mail " + requisicao.email + " fez uma pesquisa de CPF com o número " + requisicao.cpf
                            };

                            container.Resolve <AtividadeCRUDService>().Salvar(atividadeAtual);

                            if (usaCredito)
                            {
                                container.Resolve <CreditoCRUDService>().Remover(Convert.ToInt32(usuario.Id), 1);
                            }

                            pessoa.UsuarioConsulta = usuario;
                            pessoa.CPF             = requisicao.cpf;
                            pessoa.DataCadastro    = DateTime.Now;

                            container.Resolve <PessoaFisica2CRUDService>().Salvar(pessoa);

                            pessoa.Enderecos.ToList().ForEach(x => x.PessoaFisica2 = null);
                            pessoa.Veiculos.ToList().ForEach(x => x.PessoaFisica2  = null);
                            pessoa.Emails.ToList().ForEach(x => x.PessoaFisica2    = null);
                            pessoa.Empregos.ToList().ForEach(x => x.PessoaFisica2  = null);
                            pessoa.Vizinhos.ToList().ForEach(x => x.PessoaFisica2  = null);
                            pessoa.Parentes.ToList().ForEach(x => x.PessoaFisica2  = null);
                            pessoa.Telefones.ToList().ForEach(x => x.PessoaFisica2 = null);

                            if (pessoa.Veiculos != null)
                            {
                                pessoa.Veiculos.ToList().ForEach(x => x.CombustivelTexto = DomainUtil.ObterCombustivelTexto(x.Combustivel));
                                pessoa.Veiculos.ToList().ForEach(x => x.EspecieTexto     = DomainUtil.ObterEspecieVeiculoTexto(x.Especie));
                                pessoa.Veiculos.ToList().ForEach(x => x.TipoTexto        = DomainUtil.ObterTipoVeiculoTexto(x.Tipo));
                            }

                            return(Json(new
                            {
                                erro = "N",
                                Nome = pessoa.Nome,
                                CPF = pessoa.CPF,
                                DataNascimento = pessoa.DataNascimento,
                                NomeMae = pessoa.NomeMae,
                                Enderecos = pessoa.Enderecos,
                                Veiculos = pessoa.Veiculos,
                                Emails = pessoa.Emails,
                                Empregos = pessoa.Empregos,
                                Vizinhos = pessoa.Vizinhos,
                                Parentes = pessoa.Parentes,
                                Telefones = pessoa.Telefones,
                                Importado = pessoa.Importado,
                                Hash = Guid.NewGuid().ToString(),
                                HoraConsulta = DateTime.Now.ToString("HH:mm:ss"),
                                DataConsulta = DateTime.Now.ToString("dd/MM/yyyy"),
                                NovaAPI = pessoa.APISeekLoc
                            }));
                        }
                    }
                    else
                    {
                        pessoa.Enderecos.ToList().ForEach(x => x.PessoaFisica2 = null);
                        pessoa.Veiculos.ToList().ForEach(x => x.PessoaFisica2  = null);
                        pessoa.Emails.ToList().ForEach(x => x.PessoaFisica2    = null);
                        pessoa.Empregos.ToList().ForEach(x => x.PessoaFisica2  = null);
                        pessoa.Vizinhos.ToList().ForEach(x => x.PessoaFisica2  = null);
                        pessoa.Parentes.ToList().ForEach(x => x.PessoaFisica2  = null);
                        pessoa.Telefones.ToList().ForEach(x => x.PessoaFisica2 = null);

                        if (pessoa.Veiculos != null)
                        {
                            pessoa.Veiculos.ToList().ForEach(x => x.CombustivelTexto = DomainUtil.ObterCombustivelTexto(x.Combustivel));
                            pessoa.Veiculos.ToList().ForEach(x => x.EspecieTexto     = DomainUtil.ObterEspecieVeiculoTexto(x.Especie));
                            pessoa.Veiculos.ToList().ForEach(x => x.TipoTexto        = DomainUtil.ObterTipoVeiculoTexto(x.Tipo));
                        }

                        return(Json(new
                        {
                            erro = "N",
                            Nome = pessoa.Nome,
                            CPF = pessoa.CPF,
                            DataNascimento = pessoa.DataNascimento,
                            NomeMae = pessoa.NomeMae,
                            Enderecos = pessoa.Enderecos,
                            Veiculos = pessoa.Veiculos,
                            Emails = pessoa.Emails,
                            Empregos = pessoa.Empregos,
                            Vizinhos = pessoa.Vizinhos,
                            Parentes = pessoa.Parentes,
                            Telefones = pessoa.Telefones,
                            Importado = pessoa.Importado,
                            Hash = Guid.NewGuid().ToString(),
                            HoraConsulta = DateTime.Now.ToString("HH:mm:ss"),
                            DataConsulta = DateTime.Now.ToString("dd/MM/yyyy")
                        }));
                    }
                }
                else
                {
                    ILimiteUsuarioRepository limiteRepository = container.Resolve <ILimiteUsuarioRepository>();
                    var limite = limiteRepository.ObterLimiteUsuarioPeloEmail(requisicao.email);

                    if (limite != null)
                    {
                        ICreditoRepository creditoRepo = container.Resolve <ICreditoRepository>();
                        var credito = creditoRepo.ObterCreditoPeloUsuario(Convert.ToInt32(usuario.Id));
                        if (credito == null)
                        {
                            if (limite.Quantidade >= limite.LimiteConsultas && usuario.Especial != "S")
                            {
                                return(Json(new { erro = "S", mensagem = String.Format("O seu usuário já atingiu o limite diário de consultas, que são {0} consultas, caso queira fazer novas consultas aguarde até o próximo dia ou adquira um pacote de consultas avulsas.", limite.LimiteConsultas) }));
                            }
                        }
                        else
                        {
                            usaCredito = true;
                        }
                    }
                    else
                    {
                        usaCredito = true;
                    }

                    pessoa = pessoaFisicaRepository.ObterNovaPessoaPeloCPF(requisicao.cpf);

                    if (pessoa != null)
                    {
                        if (usaCredito)
                        {
                            container.Resolve <CreditoCRUDService>().Remover(Convert.ToInt32(usuario.Id), 1);
                        }
                    }

                    var logConsulta = new LogConsulta();
                    logConsulta.Origem       = Convert.ToInt32(OrigemConsultaEnum.SeekLoc);
                    logConsulta.Tipo         = Convert.ToInt32(TipoConsultaEnum.CPF);
                    logConsulta.Usuario      = usuario;
                    logConsulta.CPFCNPJ      = requisicao.cpf;
                    logConsulta.DataCadastro = DateTime.Now;
                    logConsulta.TemResultado = (pessoa != null && !String.IsNullOrEmpty(pessoa.Nome)) ? "S" : "N";

                    container.Resolve <LogConsultaCRUDService>().Salvar(logConsulta);

                    if (pessoa != null && String.IsNullOrEmpty(pessoa.Mensagem))
                    {
                        var atividadeAtual = new Atividade()
                        {
                            Usuario = usuario, IP = requisicao.ip, Data = DateTime.Now, TipoAtividade = Convert.ToInt32(TipoAtividade.ConsultaPessoaFisicaCPF), Origem = Convert.ToInt32(OrigemAcesso.Web), Descricao = "O usuário com o e-mail " + requisicao.email + " fez uma pesquisa de CPF com o número " + requisicao.cpf
                        };

                        container.Resolve <AtividadeCRUDService>().Salvar(atividadeAtual);

                        pessoa.UsuarioConsulta = usuario;
                        pessoa.CPF             = requisicao.cpf;
                        pessoa.Hash            = requisicao.hash;
                        pessoa.DataCadastro    = DateTime.Now;

                        container.Resolve <PessoaFisica2CRUDService>().Salvar(pessoa);

                        pessoa.Enderecos.ToList().ForEach(x => x.PessoaFisica2 = null);
                        pessoa.Veiculos.ToList().ForEach(x => x.PessoaFisica2  = null);
                        pessoa.Emails.ToList().ForEach(x => x.PessoaFisica2    = null);
                        pessoa.Empregos.ToList().ForEach(x => x.PessoaFisica2  = null);
                        pessoa.Vizinhos.ToList().ForEach(x => x.PessoaFisica2  = null);
                        pessoa.Parentes.ToList().ForEach(x => x.PessoaFisica2  = null);
                        pessoa.Telefones.ToList().ForEach(x => x.PessoaFisica2 = null);

                        if (pessoa.Veiculos != null)
                        {
                            pessoa.Veiculos.ToList().ForEach(x => x.CombustivelTexto = DomainUtil.ObterCombustivelTexto(x.Combustivel));
                            pessoa.Veiculos.ToList().ForEach(x => x.EspecieTexto     = DomainUtil.ObterEspecieVeiculoTexto(x.Especie));
                            pessoa.Veiculos.ToList().ForEach(x => x.TipoTexto        = DomainUtil.ObterTipoVeiculoTexto(x.Tipo));
                        }

                        return(Json(new
                        {
                            erro = "N",
                            Nome = pessoa.Nome,
                            CPF = pessoa.CPF,
                            DataNascimento = pessoa.DataNascimento,
                            NomeMae = pessoa.NomeMae,
                            Enderecos = pessoa.Enderecos,
                            Veiculos = pessoa.Veiculos,
                            Emails = pessoa.Emails,
                            Empregos = pessoa.Empregos,
                            Vizinhos = pessoa.Vizinhos,
                            Parentes = pessoa.Parentes,
                            Telefones = pessoa.Telefones,
                            Importado = pessoa.Importado,
                            Hash = Guid.NewGuid().ToString(),
                            HoraConsulta = DateTime.Now.ToString("HH:mm:ss"),
                            DataConsulta = DateTime.Now.ToString("dd/MM/yyyy")
                        }));
                    }
                    else
                    {
                        return(Json(new { erro = "S", mensagem = "Sem resultado para este CPF." }));
                    }
                }
            }
            else
            {
                return(Json(new { erro = "S", mensagem = validacao.erroVO.mensagem }));
            }


            return(Json(new { erro = "S", mensagem = "Sem resultado" }));
        }
Пример #4
0
        public IHttpActionResult ObterURLPagamento(String email, String servico, String ip, String hash, String emitenota, String cpfnota)
        {
            var     hashGerado                   = DomainUtil.GerarHashMD5(String.Concat(email, ip, servico));
            String  pedidoGerado                 = String.Empty;
            String  nomeComprador                = String.Empty;
            String  codigoServico                = String.Empty;
            String  descricaoServico             = String.Empty;
            String  valorServico                 = String.Empty;
            Usuario usuarioAtual                 = null;
            Boolean sandbox                      = true;
            String  ArquivoConfiguracaoPagSeguro = @"C:\temp\PagSeguroConfig.xml";

            if (!File.Exists(ArquivoConfiguracaoPagSeguro))
            {
                return(Json(new { erro = "S", mensagem = "Arquivo de configuração do pagamento com pagseguro não foi encontrado." }));
            }


            try
            {
                var configuracaoRepo = container.Resolve <IConfiguracaoRepository>();
                var usuarioRepo      = container.Resolve <IUsuarioRepository>();
                var servicoRepo      = container.Resolve <IServicoRepository>();
                var usuario          = usuarioRepo.ObterPeloEmail(email);
                var servicoBD        = servicoRepo.ObterPeloCodigo(servico);
                var configuracao     = configuracaoRepo.GetById(1);
                if (configuracao != null)
                {
                    sandbox = configuracao.AmbienteProducao == "N";
                    ArquivoConfiguracaoPagSeguro = configuracao.ArquivoConfiguracaoPagSeguro;
                }

                if (usuario != null)
                {
                    nomeComprador = usuario.Nome;
                    usuarioAtual  = usuario;
                    var pedidoRepo = container.Resolve <IPedidoRepository>();

                    var pedido = new Pedido();
                    pedido.Usuario        = usuario;
                    pedido.IP             = ip;
                    pedido.Status         = (Int32)StatusPedido.Pendente;
                    pedido.Data           = DateTime.Now;
                    pedido.CPFNF          = cpfnota;
                    pedido.EmiteNF        = emitenota;
                    pedido.FormaPagamento = (Int32)FormaPagamento.PagSeguro;

                    if (servicoBD != null)
                    {
                        codigoServico    = servicoBD.Codigo;
                        descricaoServico = servicoBD.DescricaoCurta;
                        valorServico     = String.Format("{0:0.00}", servicoBD.Valor);
                        pedido.Servico   = servicoBD;
                        pedidoRepo.Save(pedido);
                        pedidoGerado = pedido.Id.ToString();
                    }
                    else
                    {
                        return(Json(new { erro = "S", mensagem = "Código do serviço não cadastrado." }));
                    }
                }
                else
                {
                    return(Json(new { erro = "S", mensagem = "Usuário não cadastrado." }));
                }
            }
            catch (Exception ex)
            {
                String debug = ex.Message;
                return(Json(new { erro = "S", mensagem = "Ocorreu um erro inesperado e não foi possível gerar o seu pedido, por gentileza informe ao desenvolvedor." }));
            }

            PagSeguroConfiguration.UrlXmlConfiguration = ArquivoConfiguracaoPagSeguro;
            EnvironmentConfiguration.ChangeEnvironment(sandbox);

            PaymentRequest payment = new PaymentRequest();

            payment.Items.Add(new Item(codigoServico, descricaoServico, 1, Convert.ToDecimal(valorServico)));

            payment.Sender = new Sender(nomeComprador, email, null);

            payment.Shipping = new Shipping();
            payment.Shipping.ShippingType = ShippingType.NotSpecified;
            payment.Currency  = Currency.Brl;
            payment.Reference = pedidoGerado;

            try
            {
                AccountCredentials credentials = PagSeguroConfiguration.Credentials(sandbox);
                Uri paymentRedirectUri         = payment.Register(credentials);

                var atividadeAtual = new Atividade()
                {
                    Usuario = usuarioAtual, Data = DateTime.Now, TipoAtividade = Convert.ToInt32(TipoAtividade.NovaCompra), Origem = Convert.ToInt32(OrigemAcesso.Web), Descricao = String.Format("O usuário com o e-mail {0} fez o pedido {1} e gerou a url {2} para checkout no pagseguro", email, pedidoGerado, paymentRedirectUri.AbsoluteUri)
                };

                container.Resolve <AtividadeCRUDService>().Salvar(atividadeAtual);

                return(Json(new { erro = "N", url = paymentRedirectUri.AbsoluteUri }));
            }
            catch (PagSeguroServiceException ex)
            {
                String mensagem = String.Empty;

                String assunto = "Erro de PagSeguroServiceException no método ObterURLPagamento -  " + email;
                if (ex.Errors.Count > 0)
                {
                    mensagem = ex.Errors[0].Code + " - " + ex.Errors[0].Message;
                }
                String mensagem2 = String.Format("Ocorreu um erro - Erro do pagseguro {0} - Data: {1}", mensagem, DateTime.Now.ToString("dd/MM/yyyy - HH:mm:ss"));

                container.Resolve <IEmailService>().EnviarEmail(Constantes.EMAIL_DESTINATARIO, Constantes.EMAIL_REMETENTE, "Suporte ", assunto, mensagem2, false);

                String texto = ex.Message;
                return(Json(new { erro = "S", mensagem = texto }));;
            }
        }