public static ConsultarObjetosResponse <ClienteRenovacaoCadastralInfo> ConsultarClienteRenovacaoCadastral(ConsultarEntidadeRequest <ClienteRenovacaoCadastralInfo> pParametros) { try { DateTime lDataPesquisaInicio = default(DateTime); DateTime lDataPesquisaFim = default(DateTime); DataTable lDataTableOracle = new DataTable(); DataTable lDataTableSql = new DataTable(); ConsultarObjetosResponse <ClienteRenovacaoCadastralInfo> lResposta = new ConsultarObjetosResponse <ClienteRenovacaoCadastralInfo>(); ConexaoDbHelper lAcessaDados = new ConexaoDbHelper(); //--> Recuperando a informação de configuração para 'PeriodoDeEmissaoDeRelatorio' int lQuantidadeMesesProgressos = ReceberConfiguracaoPorDescricao( new ReceberEntidadeRequest <ConfiguracaoInfo>() { Objeto = new ConfiguracaoInfo() { Configuracao = EConfiguracaoDescricao.PeriodicidadeRenovacaoCadastral } }).Objeto.Valor.DBToInt32(); //--> O sinacor já define como 24 meses para a renovação if (!String.IsNullOrEmpty(pParametros.Objeto.DsDesejaAplicar)) { if (pParametros.Objeto.DsDesejaAplicar.Equals("CAM")) { lQuantidadeMesesProgressos = 12 - lQuantidadeMesesProgressos; } } else { lQuantidadeMesesProgressos = 24 - lQuantidadeMesesProgressos; } lDataPesquisaInicio = pParametros.Objeto.DtPesquisa.Value; lDataPesquisaFim = pParametros.Objeto.DtPesquisaFim.Value; lAcessaDados.ConnectionStringName = gNomeConexaoSinacor; using (var lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "prc_cliente_renov_cadas_sel")) { //--> Pesquisando no Sinacor os dados dos clientes em período de renovação. lAcessaDados.AddInParameter(lDbCommand, "pdt_pesquisaInicio", DbType.Date, lDataPesquisaInicio); lAcessaDados.AddInParameter(lDbCommand, "pdt_pesquisaFim", DbType.Date, lDataPesquisaFim); lAcessaDados.AddInParameter(lDbCommand, "pqt_meses_progressos", DbType.Int32, lQuantidadeMesesProgressos); lDataTableOracle = lAcessaDados.ExecuteOracleDataTable(lDbCommand); } lAcessaDados.ConnectionStringName = gNomeConexaoCadastro; //using (var lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "cliente_cpfcnpj_sel_sp")) //{ //--> Fazendo um de/para dos clientes para montar o objeto de Cliente usando como índice o CPF. // if (null != lDataTableOracle && lDataTableOracle.Rows.Count > 0) // for (int i = 0; i < lDataTableOracle.Rows.Count; i++) // { // lAcessaDados.ClearParameters(lDbCommand); // lAcessaDados.AddInParameter(lDbCommand, "@ds_cpfcnpj", DbType.String, lDataTableOracle.Rows[i]["cd_cpfcgc"].DBToString()); // lDataTableSql = lAcessaDados.ExecuteDbDataTable(lDbCommand); // if (null != lDataTableSql && lDataTableSql.Rows.Count > 0) // lResposta.Resultado.Add(CriarRegistroClienteRenovacaoCadastral(lDataTableSql.Rows[0], lDataTableOracle.Rows[i]["dt_validade"].DBToDateTime())); // } //} var htCpfData = new Hashtable(); var lIndice = default(int); //Fazendo em uma unica chamada ao banco var cpfs = new StringBuilder(); try { if (null != lDataTableOracle && lDataTableOracle.Rows.Count > 0) { for (int i = 0; i < lDataTableOracle.Rows.Count; i++) { lIndice = i; if (!htCpfData.ContainsKey(lDataTableOracle.Rows[i]["cd_cpfcgc"].DBToInt64())) { if (lDataTableOracle.Rows[i]["cd_cpfcgc"].DBToString().Length > 11) { cpfs.AppendFormat("{0},", lDataTableOracle.Rows[i]["cd_cpfcgc"].DBToString().PadLeft(14, '0')); } else { cpfs.AppendFormat("{0},", lDataTableOracle.Rows[i]["cd_cpfcgc"].DBToString().PadLeft(11, '0')); } htCpfData.Add(lDataTableOracle.Rows[i]["cd_cpfcgc"].DBToInt64(), lDataTableOracle.Rows[i]["dt_validade"].DBToDateTime()); } } } } catch (Exception ex) { var exee = ex.ToString(); if (string.IsNullOrEmpty(exee)) { } } if (cpfs.Length > 0) { using (var lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "cliente_cpfcnpj_lst_sp")) { lAcessaDados.ClearParameters(lDbCommand); lAcessaDados.AddInParameter(lDbCommand, "@ds_cpfcnpj", DbType.String, cpfs.ToString().Trim(',')); lAcessaDados.AddInParameter(lDbCommand, "@TipoPessoa", DbType.String, pParametros.Objeto.TipoPessoa); lAcessaDados.AddInParameter(lDbCommand, "@cd_assessor", DbType.String, pParametros.Objeto.CdAssessor); if (!String.IsNullOrEmpty(pParametros.Objeto.DsDesejaAplicar)) { lAcessaDados.AddInParameter(lDbCommand, "@ds_desejaaplicar", DbType.String, pParametros.Objeto.DsDesejaAplicar); } lDataTableSql = lAcessaDados.ExecuteDbDataTable(lDbCommand); } } var lCliente = new ClienteRenovacaoCadastralInfo(); foreach (DataRow item in lDataTableSql.Rows) { lCliente = new ClienteRenovacaoCadastralInfo(); lCliente.DsNome = item["ds_nome"].DBToString(); lCliente.DsCpfCnpj = item["ds_cpfcnpj"].DBToString(); lCliente.IdCliente = item["id_cliente"].DBToInt32(); lCliente.TpPessoa = item["tp_pessoa"].DBToChar(); lCliente.DsTelefone = string.Format("{0} {1}", item["ds_telefone_ddd"].DBToString(), item["ds_telefone_numero"].DBToString()); lCliente.DtRenovacao = htCpfData[Int64.Parse(lCliente.DsCpfCnpj)].DBToDateTime(); lCliente.CodigoBovespa = item["cd_codigo"].DBToString(); lCliente.CdAssessor = item["cd_assessor"].DBToString(); lCliente.Email = item["ds_email"].DBToString(); if (lCliente.DtRenovacao != DateTime.MinValue) { lResposta.Resultado.Add(lCliente); } } //[SP_CLIENTE_RENOVACAO_LST_SP] if (pParametros.Objeto.DsDesejaAplicar == "CAMBIO") { using (var lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "SP_CLIENTE_RENOVACAO_LST_SP")) { lAcessaDados.ClearParameters(lDbCommand); lAcessaDados.AddInParameter(lDbCommand, "@TipoPessoa", DbType.String, pParametros.Objeto.TipoPessoa); lAcessaDados.AddInParameter(lDbCommand, "@cd_assessor", DbType.String, pParametros.Objeto.CdAssessor); lAcessaDados.AddInParameter(lDbCommand, "@DtInicio", DbType.Date, lDataPesquisaInicio); lAcessaDados.AddInParameter(lDbCommand, "@DtFim", DbType.Date, lDataPesquisaFim); if (!String.IsNullOrEmpty(pParametros.Objeto.DsDesejaAplicar)) { lAcessaDados.AddInParameter(lDbCommand, "@ds_desejaaplicar", DbType.String, pParametros.Objeto.DsDesejaAplicar); } lDataTableSql = lAcessaDados.ExecuteDbDataTable(lDbCommand); } foreach (DataRow item in lDataTableSql.Rows) { lCliente = new ClienteRenovacaoCadastralInfo(); lCliente.DsNome = item["ds_nome"].DBToString(); lCliente.DsCpfCnpj = item["ds_cpfcnpj"].DBToString(); lCliente.IdCliente = item["id_cliente"].DBToInt32(); lCliente.TpPessoa = item["tp_pessoa"].DBToChar(); lCliente.DsTelefone = string.Format("{0} {1}", item["ds_telefone_ddd"].DBToString(), item["ds_telefone_numero"].DBToString()); lCliente.DtRenovacao = item["dt_renovacao"].DBToDateTime(); lCliente.CodigoBovespa = item["cd_codigo"].DBToString(); lCliente.CdAssessor = item["cd_assessor"].DBToString(); lCliente.Email = item["ds_email"].DBToString(); if (lCliente.DtRenovacao != DateTime.MinValue) { lResposta.Resultado.Add(lCliente); } } } //--> Ordenando por data de atualização cadastral. lResposta.Resultado.Sort(delegate(ClienteRenovacaoCadastralInfo cr1, ClienteRenovacaoCadastralInfo cr2) { return(Comparer <DateTime> .Default.Compare(cr1.DtRenovacao, cr2.DtRenovacao)); }); return(lResposta); } catch (Exception ex) { LogCadastro.Logar(pParametros.Objeto, pParametros.IdUsuarioLogado, pParametros.DescricaoUsuarioLogado, LogCadastro.eAcao.Consultar, ex); throw ex; } }