private string verificarErros(Kitdigital kit, int cdconseg, int id)
        {
            try
            {
                //Verifica se o certificado está cancelado
                if (VerificaClienteCancelado(kit.externalKey))
                {
                    return("kit: Cliente está cancelado.");
                }

                var documentos = BuscarCertificados(id, cdconseg, kit.digital);
                if (documentos.Count() == 0)
                {
                    return("Nenhum documento parametrizado para este Produto.");
                }

                foreach (var i in documentos)
                {
                    switch (i.nomeDocumento)
                    {
                    case "CERTIFICADO":
                        if (kit.certificado == null)
                        {
                            return("certificado: Nenhum dado do documento foi recuperado.");
                        }
                        if (kit.certificado.seguro == null)
                        {
                            return("certificado: Nenhum dado de seguro foi recuperado.");
                        }
                        if (kit.certificado.seguro.estipulante == null)
                        {
                            return("certificado: Erro ao recuperar Estipulante.");
                        }
                        if (kit.certificado.seguro.valorPremioLiquido.Equals("0,00"))
                        {
                            return("certificado: Prêmio liquido não encontrado/igual a 0.");
                        }
                        if (kit.certificado.seguro.estipulante.dadosComplementares.endereco == null)
                        {
                            return("certificado: Erro ao recuperar endereço do Estipulante");
                        }
                        if (kit.certificado.titular == null)
                        {
                            return("certificado: Nenhum dado do principal foi recuperado.");
                        }
                        if (kit.certificado.titular.coberturasContratadas == null)
                        {
                            return("certificado: Não foram encontradas coberturas do principal.");
                        }
                        if (kit.certificado.titular.dadosComplementares.endereco == null)
                        {
                            return("certificado: Erro ao recuperar endereço do principal.");
                        }
                        if (kit.certificado.seguro.dps.Count() == 0)
                        {
                            return("certificado: Erro ao recuperar DPS do principal.");
                        }

                        //Tasker 33110
                        if (kit.digital == "S")
                        {
                            //Se o certificado for digital e não tiver telefone e nem e-mail não deixar gerar json
                            if ((kit.certificado.titular.dadosComplementares.telefone == null) && (kit.certificado.titular.dadosComplementares.email == null))
                            {
                                return("certificado: Erro ao recuperar telefone e e-mail");
                            }
                        }
                        //Tasker 33110 fim

                        if (kit.certificado.dependentes != null)
                        {
                            foreach (var item in kit.certificado.dependentes)
                            {
                                if (item.coberturasContratadas == null)
                                {
                                    return("certificado: Erro ao recuperar coberturas para os dependente");
                                }
                            }
                        }
                        break;

                    case "CARNÊ":
                        if (kit.boleto == null)
                        {
                            //KITS que saem somente Carnê
                            if (kit.tipoKit == 48 || kit.tipoKit == 123 || kit.tipoKit == 100 || kit.tipoKit == 124)
                            {
                                return("boleto: Não foi encontrado boleto para o cliente.");
                            }

                            //Tasker 36408
                            //Se for Kit Renovação, certificado não digital e forma de pagamento = Ficha de Compensação
                            if ((kit.tipoKit == 51) && (kit.digital == "N"))
                            {
                                if (kit.certificado == null)
                                {
                                    return("boleto: Nenhum dado do documento foi recuperado.");
                                }
                                else
                                if (kit.certificado.titular.dadosComplementares.tipoPagamento.Equals("Ficha de Compensação"))
                                {
                                    return("boleto: Não foi encontrado boleto para o cliente.");
                                }
                            }
                            //Tasker 36408 - fim
                        }
                        else
                        {
                            if (kit.boleto.laminas.Where(x => x.parcela == -1).Count() > 0)
                            {
                                return("boleto: Não foi encontrado linha digitável para os boletos.");
                            }
                            if (kit.boleto.dadosComplementares.endereco == null)
                            {
                                return("boleto: Erro ao recuperar endereço.");
                            }

                            //Tasker 33110
                            if (kit.digital == "S")
                            {
                                //Se o certificado for digital e não tiver telefone e nem e-mail não deixar gerar json
                                if ((kit.boleto.dadosComplementares.telefone == null) && (kit.boleto.dadosComplementares.email == null))
                                {
                                    return("boleto: Erro ao recuperar telefone e e-mail");
                                }
                            }
                            //Tasker 33110 fim
                        }
                        break;

                    case "CARTEIRINHA":
                        if (kit.carteirinha == null)
                        {
                            return("carteirinha: Nenhum dado do documento foi recuperado.");
                        }
                        if (kit.carteirinha.dadosComplementares.endereco == null)
                        {
                            return("carteirinha: Erro ao recuperar endereço.");
                        }

                        //Tasker 33110
                        if (kit.digital == "S")
                        {
                            //Se o certificado for digital e não tiver telefone e nem e-mail não deixar gerar json
                            if ((kit.carteirinha.dadosComplementares.telefone == null) && (kit.carteirinha.dadosComplementares.email == null))
                            {
                                return("carteirinha: Erro ao recuperar telefone e e-mail");
                            }
                        }
                        //Tasker 33110 fim

                        break;

                    default:
                        return("Nenhum dado foi encontrado");
                    }
                }
                return("ok");
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
Exemplo n.º 2
0
        public IEnumerable <Kitdigital> BuscarCertificado(List <int> lstKit, string usuario, string nomeArquivo)
        {
            try
            {
                var dao = new ListaKitIndividualListaLogListaTotal();
                var retornoLogProcessamento = dao.AddLogProcessamento(usuario);
                var lista    = new ConcurrentBag <Kitdigital>();
                var listaDto = new ConcurrentBag <Kitdigital>();
                Mapeamento.Instance();
                foreach (var tipoKit in lstKit)
                {
                    Console.WriteLine();
                    Console.Write("Processando KIT ");
                    Console.WriteLine(tipoKit);


                    using (var db = new SqlConnection(ConfigurationManager.ConnectionStrings["kitDigitalJson"].ConnectionString))
                    {
                        db.Open();
                        var range = db.Query <Controle2Via>("PR_BuscarControle2ViaArquivoDigital", new { tipoKit = tipoKit }, commandType: CommandType.StoredProcedure).ToList();
                        db.Close();
                        if (range.Count() > 0)
                        {
                            Console.WriteLine();
                            Console.Write("Quantidade de Certificados a Processar: ");
                            Console.WriteLine(range.Count());
                            try
                            {
                                Parallel.For(0, range.Count(), item =>
                                {
                                    Kitdigital kitDigital           = new Kitdigital();
                                    kitDigital.externalKey          = range[item].cdc2v;
                                    kitDigital.tipoKit              = tipoKit;
                                    kitDigital.digital              = range[item].iddig.TrimEnd();
                                    ItemOutRiscPess itemOutRiscPess = BuscarItemOutRiscPess(range[item].cdconseg, (int)range[item].cditeseg);
                                    Pessoa pessoa = BuscarPessoaKit((int)range[item].nrcer, range[item].cdconseg);
                                    EnderecoPessoa enderecoPessoa = BuscarEnderecoPessoaKit(pessoa.cdpes);
                                    Produto produto      = BuscarProduto(range[item].cdconseg);
                                    Ramo ramo            = BuscarRamo(produto.cdramosg);
                                    Emissao emissao      = BuscarEmissao(range[item].cdconseg, range[item].cdemi);
                                    string orgaoProdutor = BuscarOrgaoProdutor((int)emissao.cdorgprtsuc).TrimEnd();
                                    var certificados     = BuscarCertificados(tipoKit, range[item].cdconseg, range[item].iddig);
                                    if (certificados.Count() > 0)
                                    {
                                        foreach (var i in certificados)
                                        {
                                            switch (i.nomeDocumento)
                                            {
                                            case "CERTIFICADO":
                                                kitDigital.certificado               = new Certificado();
                                                kitDigital.certificado.seguro        = BuscarSeguro(ramo, emissao, produto, pessoa, orgaoProdutor, range[item].cdemi, (int)range[item].nrcer, range[item].cdconseg, (int)range[item].cditeseg);
                                                kitDigital.certificado.titular       = BuscarPrincipal(enderecoPessoa, emissao, produto, pessoa, itemOutRiscPess, range[item].cdconseg, (int)range[item].nrcer, (int)range[item].cditeseg);
                                                kitDigital.certificado.dependentes   = BuscarDependentes(range[item].cdconseg, (int)range[item].cditeseg);
                                                kitDigital.certificado.beneficiarios = BuscarBeneficiarios(range[item].cdconseg, (int)range[item].cditeseg);
                                                kitDigital.certificado.dataEmissao   = BuscarDataEmissao().ToString();
                                                kitDigital.certificado.processoSUSEP = BuscarProcessoSusep(produto.cdprodut);


                                                kitDigital.certificado.titular.dadosComplementares.email         = enderecoPessoa.nmemail;
                                                kitDigital.certificado.titular.dadosComplementares.endereco      = Mapper.Map <EnderecoPessoa, Endereco>(enderecoPessoa);
                                                kitDigital.certificado.titular.dadosComplementares.telefone      = Mapper.Map <IEnumerable <TelefonePessoa>, IEnumerable <Telefone> >(BuscarTelefone(enderecoPessoa.cdpes));
                                                kitDigital.certificado.titular.dadosComplementares.tipoPagamento = RecuperarTipoPagamento(emissao.cdconseg, emissao.cdemi, pessoa.cdpes);


                                                kitDigital.certificado.observacaoCarencia = "A carência para efeitos deste seguro, a contar da data de início de vigência, será de 120 (cento e vinte) dias. Não haverá carência para acidentes pessoais. A carência para Assistência Desemprego, quando inclusa no seguro, será de 180 (cento e oitenta) dias. Em caso de inclusão do cônjuge após o início de vigência do seguro deverá ser cumprida a carência estabelecida, a contar da data de inclusão do mesmo. A carência para Dependentes Agregados será contada a partir da data de início de vigência da cobertura do dependente.";
                                                break;

                                            case "CARNÊ":
                                                kitDigital.boleto = new Boleto();

                                                kitDigital.boleto.dadosComplementares.email    = enderecoPessoa.nmemail;
                                                kitDigital.boleto.dadosComplementares.endereco = Mapper.Map <EnderecoPessoa, Endereco>(enderecoPessoa);
                                                kitDigital.boleto.dadosComplementares.telefone = Mapper.Map <IEnumerable <TelefonePessoa>, IEnumerable <Telefone> >(BuscarTelefone(enderecoPessoa.cdpes));

                                                if (kitDigital.tipoKit != 123)
                                                {
                                                    kitDigital.boleto.dadosComplementares.tipoPagamento = RecuperarTipoPagamento(emissao.cdconseg, emissao.cdemi, pessoa.cdpes);
                                                }

                                                kitDigital.boleto.laminas = new List <Lamina>();
                                                var lstkitCarne           = BuscarKitCarne(range[item].cdc2v);

                                                if (lstkitCarne.Count() > 0)
                                                {
                                                    //Inclusão para Recuperar o Meio de Pagamento da Parcela da Teimosinha
                                                    if (kitDigital.tipoKit == 123)
                                                    {
                                                        kitDigital.boleto.dadosComplementares.tipoPagamento = RecuperarTipoPagamentoParcela(lstkitCarne[0].codigoContrato, lstkitCarne[0].codigoEmissao, lstkitCarne[0].numeroParcela);

                                                        //Caso não encontre o valor da parcela anterior, recupera do certificado
                                                        if (kitDigital.boleto.dadosComplementares.tipoPagamento == null)
                                                        {
                                                            kitDigital.boleto.dadosComplementares.tipoPagamento = RecuperarTipoPagamento(emissao.cdconseg, emissao.cdemi, pessoa.cdpes);
                                                        }
                                                    }

                                                    foreach (var kit in lstkitCarne)
                                                    {
                                                        ParcelaPremio pp = BuscarParcelaPremio(kit.codigoContrato, kit.codigoEmissao, kit.numeroParcela);

                                                        if (pp.tplqdparpre == 0)     //Ficha de Compensação
                                                        {
                                                            if ((pp.stparpre != 4) && (pp.stparpre != 5) && (pp.stparpre != 12))
                                                            {
                                                                Lamina lamina = Mapper.Map <Lamina>(BuscarTBDadosBoleto(kit.codigoContrato, kit.codigoEmissao, kit.numeroParcela));

                                                                if (lamina != null)
                                                                {
                                                                    lamina.nossoNumero         = lamina.nossoNumero.Replace("-", "").Insert(lamina.nossoNumero.Count() - 2, "-");
                                                                    lamina                     = BuscarLamina(kit.codigoContrato, kit.codigoEmissao, kit.numeroParcela, (int)range[item].nrcer, emissao, lamina);
                                                                    lamina.vencimento          = pp.dtven > pp.dtvenprg ? pp.dtven.ToString() : pp.dtvenprg.ToString();
                                                                    lamina.dataProcessamento   = BuscarDataEmissao().ToString();
                                                                    lamina.dataDocumento       = lamina.dataProcessamento;
                                                                    lamina.dataLimitePagamento = kitDigital.tipoKit != 123 ? Convert.ToDateTime(lamina.vencimento).AddDays(15).ToString() : Convert.ToDateTime(lamina.vencimento).ToString();
                                                                    lamina.carencia            = BuscarCarencia(kit.codigoContrato, kit.codigoEmissao, kit.numeroParcela);
                                                                    kitDigital.boleto.laminas.Add(lamina);
                                                                }
                                                                else
                                                                {
                                                                    Lamina laminaInvalida  = new Lamina();
                                                                    laminaInvalida.parcela = -1;
                                                                    kitDigital.boleto.laminas.Add(laminaInvalida);
                                                                }
                                                            }
                                                        }
                                                    }
                                                }

                                                if (kitDigital.boleto.laminas.Count > 0)
                                                {
                                                    kitDigital.boleto.certificado = (int)range[item].nrcer;
                                                    kitDigital.boleto.nome        = pessoa.nmpes.TrimEnd();
                                                    kitDigital.boleto.cpf         = pessoa.nrcgccpf.ToString().Count() > 11 ? Convert.ToUInt64(pessoa.nrcgccpf).ToString(@"00\.000\.000\/0000\-00").TrimEnd() : Convert.ToUInt64(pessoa.nrcgccpf).ToString(@"000\.000\.000\-00").TrimEnd();
                                                    kitDigital.boleto.apolice     = emissao.cdorgprtsuc + "/" + ramo.cdramosg + "/" + emissao.nrapo;
                                                    kitDigital.boleto.dadosComplementares.endereco = Mapper.Map <Endereco>(enderecoPessoa);
                                                }
                                                else
                                                {
                                                    //Não houve recuperação de nenhuma lâmina
                                                    kitDigital.boleto = null;
                                                }
                                                break;

                                            case "CARTEIRINHA":
                                                kitDigital.carteirinha = new Carteirinha()
                                                {
                                                    certificado = (int)range[item].nrcer,
                                                    contrato    = range[item].cdconseg,
                                                    nome        = pessoa.nmpes.TrimEnd()
                                                };

                                                kitDigital.carteirinha.dadosComplementares.email    = enderecoPessoa.nmemail;
                                                kitDigital.carteirinha.dadosComplementares.endereco = Mapper.Map <EnderecoPessoa, Endereco>(enderecoPessoa);
                                                kitDigital.carteirinha.dadosComplementares.telefone = Mapper.Map <IEnumerable <TelefonePessoa>, IEnumerable <Telefone> >(BuscarTelefone(enderecoPessoa.cdpes));

                                                break;
                                            }
                                        }
                                    }
                                    lista.Add(kitDigital);
                                });
                            }
                            catch (Exception ex)
                            {
                                throw ex;
                            }
                        }
                    }
                }
                using (TransactionScope scope = new TransactionScope())
                {
                    listaDto = dao.AddControleImpKitItem(lstKit, usuario, lista, retornoLogProcessamento, nomeArquivo);
                    scope.Complete();
                    scope.Dispose();
                }
                return(listaDto);
            }
            catch (Exception e)
            {
                throw e;
            }
        }