protected void ValidaCPF(ConsultaCPFCNPJVO vo, ErroConsulta erro)
        {
            if (String.IsNullOrEmpty(vo.CPF))
            {
                TemErro         = true;
                erroVO.erro     = "S";
                erroVO.mensagem = "O CPF não foi informado.";

                SalvarErro(erro, erroVO.mensagem);
            }
            else
            {
                if (!DomainUtil.CPFEhValido(vo.CPF))
                {
                    TemErro         = true;
                    erroVO.erro     = "S";
                    erroVO.mensagem = "O CPF informado não é válido.";

                    SalvarErro(erro, erroVO.mensagem);
                }
                else
                {
                    var CPFRepo = container.Resolve <ICPFBloqueadoRepository>();
                    if (CPFRepo.VerificaCPFBloqueado(vo.CPF))
                    {
                        TemErro         = true;
                        erroVO.erro     = "S";
                        erroVO.mensagem = "O CPF informado não pode ser consultado devido a solicitação do portador.";

                        SalvarErro(erro, erroVO.mensagem);
                    }
                }
            }
        }
        public override void Validate(ConsultaCPFCNPJVO vo)
        {
            base.Validate(vo);

            ErroConsulta            = new ErroConsulta();
            ErroConsulta.Cpfcnpj    = vo.CPF;
            ErroConsulta.Email      = vo.Email;
            ErroConsulta.Aplicativo = !String.IsNullOrEmpty(vo.Aplicativo) ? Convert.ToInt32(vo.Aplicativo) : (Int32?)null;
            ErroConsulta.Data       = DateTime.Now;
            ErroConsulta.IMEI       = vo.IMEI;
            ErroConsulta.Numero     = vo.NumeroCelular;
            ErroConsulta.Versao     = vo.Versao;
            ErroConsulta.Ip         = vo.IP;

            ValidaCPF(vo, ErroConsulta);

            if (!TemErro)
            {
                ValidaEmail(vo.Email, ErroConsulta);
            }

            if (!TemErro)
            {
                ValidaAssinatura(vo.Email, ErroConsulta);
            }
        }
 protected void SalvarErro(ErroConsulta erro, String mensagem)
 {
     //Task.Run(() =>
     //{
     //    erro.Mensagem = mensagem;
     //    SalvarErroConsultaHelper.SalvarErro(erro);
     //});
 }
Пример #4
0
        public IHttpActionResult ObterChamadosUsuario(RequisicaoConsultaVO requisicao)
        {
            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;

            try
            {
                var usuario = container.Resolve <IUsuarioRepository>().ObterPeloEmailESenha(requisicao.email, requisicao.senha);

                if (usuario == null)
                {
                    return(Json(new { erro = "S", mensagem = "Usuário não possui acesso a este serviço." }));
                }
                else
                {
                    var atividadeAtual = new Atividade()
                    {
                        Usuario = usuario, IP = requisicao.ip, Data = DateTime.Now, TipoAtividade = Convert.ToInt32(TipoAtividade2.ConsultaPedido), Origem = Convert.ToInt32(OrigemAcesso.Web), Descricao = "O usuário com o e-mail " + requisicao.email + " fez uma consulta de pedido técnico. "
                    };

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

                    var chamados = container.Resolve <IPedidoTecnicoRepository>().ObterPedidosTecnicosUsuario(usuario.Id);

                    return(Json(new { erro = "N", pedidosTecnicos = chamados }));
                }
            }
            catch (Exception)
            {
                return(Json(new { erro = "S", mensagem = "Erro ao consultar os chamados técnicos do usuários." }));
            }
        }
        protected void ValidaEmail(String email, ErroConsulta erro)
        {
            if (String.IsNullOrEmpty(email))
            {
                TemErro         = true;
                erroVO.erro     = "S";
                erroVO.mensagem = "O e-mail deve ser informado.";

                SalvarErro(erro, erroVO.mensagem);
            }
            else
            {
                var usuarioRepo = container.Resolve <IUsuarioRepository>();
                if (!usuarioRepo.VerificarSeUsuarioExiste(email))
                {
                    TemErro         = true;
                    erroVO.erro     = "S";
                    erroVO.mensagem = "O e-mail informado não está cadastrado.";

                    SalvarErro(erro, erroVO.mensagem);
                }
            }
        }
        protected void ValidaAssinatura(String email, ErroConsulta erro)
        {
            var assinatura = container.Resolve <IAssinaturaRepository>().ObterDataFimAssinaturaMaisRecentePeloEmailDoUsuario(email, true);
            ICreditoRepository creditoRepo = container.Resolve <ICreditoRepository>();
            Credito            credito     = null;
            var usuario = container.Resolve <IUsuarioRepository>().ObterPeloEmail(email);

            if (usuario != null)
            {
                credito = creditoRepo.ObterCreditoPeloUsuario(Convert.ToInt32(usuario.Id));
            }

            if (String.IsNullOrEmpty(assinatura))
            {
                if (credito == null)
                {
                    TemErro         = true;
                    erroVO.erro     = "S";
                    erroVO.mensagem = "Não foi encontrada assinatura do serviço de consulta para seu e-mail, adquira um plano de consulta ou entre em contato pelo e-mail [email protected]";

                    SalvarErro(erro, erroVO.mensagem);
                }
            }
            else
            {
                var data = Convert.ToDateTime(assinatura);

                if (data < DateTime.Now.Date.AddDays(+1) && credito == null)
                {
                    TemErro         = true;
                    erroVO.erro     = "S";
                    erroVO.mensagem = "Assinatura do serviço de consulta vencida, por gentileza renove sua assinatura.";

                    SalvarErro(erro, erroVO.mensagem);
                }
            }
        }
Пример #7
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" }));
        }