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; } }