private void ListarPapeisNegociadosBovespaBmf(object pStateTransaction) { try { PapelNegociadoBmfDbLib lPapelBmfDb = new PapelNegociadoBmfDbLib(); List <PapelNegociadoBmfInfo> listPapelBmf = lPapelBmfDb.ListarPapelNegociadoBmf(); PapelNegociadoBovespaDbLib lPapelBovespaDb = new PapelNegociadoBovespaDbLib(); List <PapelNegociadoBovespaInfo> listPapelBovespa = lPapelBovespaDb.ListarPapelNegociadoBovespa(); ListaPapeisNegociados = new Hashtable(); ListaPapeisNegociados.Clear(); lock (ListaPapeisNegociados) { foreach (PapelNegociadoBovespaInfo item in listPapelBovespa) { if (!ListaPapeisNegociados.Contains(item.CodNegociacao.Trim())) { ListaPapeisNegociados.Add(item.CodNegociacao.Trim(), item); } } foreach (PapelNegociadoBmfInfo item in listPapelBmf) { if (!ListaPapeisNegociados.Contains(string.Concat(item.CodMercadoria.Trim(), item.SerieVencimento.Trim()))) { ListaPapeisNegociados.Add(string.Concat(item.CodMercadoria.Trim(), item.SerieVencimento.Trim()), item); } } logger.Info(string.Concat("Entrou no ListarPapeisNegociadosBovespaBmf e listou ", ListaPapeisNegociados.Count, " papeis")); } ListaCadastroPapeisMDS = new Dictionary <string, CadastroPapelMdsInfo>(); ListaCadastroPapeisMDS.Clear(); lock (ListaCadastroPapeisMDS) { CadastroPapeisMdsDbLib lCadastroPapeisMdsDb = new CadastroPapeisMdsDbLib(); lCadastroPapeisMdsDb._ConnectionStringName = ConnectionStringMDS; ListaCadastroPapeisMDS = lCadastroPapeisMdsDb.ListarCadastroPapeisMDS(); logger.Info(string.Concat("Entrou no ListarCadastroPapeisMDS e listou ", ListaCadastroPapeisMDS.Count, " papeis")); List <string> ListaComposicaoIndicesMDS = lCadastroPapeisMdsDb.ListarComposicaoIndicesMDS(); logger.Info(string.Concat("Entrou no ListarComposicaoIndicesMDS e listou ", ListaComposicaoIndicesMDS.Count, " papeis")); foreach (string item in ListaComposicaoIndicesMDS) { string[] composicaoIndice = item.Split('@'); string indice = composicaoIndice[0]; string instrumento = composicaoIndice[1]; if (ListaCadastroPapeisMDS.ContainsKey(instrumento)) { CadastroPapelMdsInfo dadosInstrumento = ListaCadastroPapeisMDS[instrumento]; dadosInstrumento.ComposicaoIndice += indice + ","; ListaCadastroPapeisMDS[instrumento] = dadosInstrumento; } else { logger.Error("Ops, nao ha instrumento [" + instrumento + "] na ListaCadastroPapeisMDS, erro na composicao de Indice"); } } logger.Info("Composição dos Indices atualizado"); } } catch (Exception ex) { logger.Error(pStateTransaction, ex); } }
/// <summary> /// Retorna uma lista de todos os papeis cadastrados do MDS /// </summary> /// <returns></returns> public Dictionary <string, CadastroPapelMdsInfo> ListarCadastroPapeisMDS() { SqlConnection conn = null; String procedure = "prc_lst_tbCadastroPapel"; logger.Debug("Preparando Solicitacao " + procedure); Dictionary <string, CadastroPapelMdsInfo> ret = new Dictionary <string, CadastroPapelMdsInfo>(); SqlCommand command = new SqlCommand(); try { conn = new SqlConnection(_ConnectionStringName); conn.Open(); command.Connection = conn; command.CommandType = System.Data.CommandType.StoredProcedure; command.CommandText = procedure; DataTable dtDados = new DataTable(); DateTime dataRegistro = DateTime.Now; // Obter todos os instrumentos atualizados de até 5 dias atrás, e não apenas da data atual dataRegistro = dataRegistro.AddDays(-5); do { command.Parameters.AddWithValue("@DataRegistro", dataRegistro); SqlDataAdapter da = new SqlDataAdapter(command); da.Fill(dtDados); if (dtDados.Rows.Count == 0) { command.Parameters.RemoveAt("@DataRegistro"); dataRegistro = dataRegistro.AddDays(-1); } }while (dtDados.Rows.Count == 0); foreach (DataRow registro in dtDados.Rows) { CadastroPapelMdsInfo info = new CadastroPapelMdsInfo(); info.Instrumento = registro["CodigoInstrumento"].ToString(); info.RazaoSocial = registro["RazaoSocial"].ToString(); info.GrupoCotacao = registro["GrupoCotacao"].ToString(); info.FormaCotacao = (registro["FormaCotacao"].ToString().Equals("") ? 0 : Convert.ToInt32(registro["FormaCotacao"].ToString())); info.DataUltimoNegocio = (registro["DataUltimoNegocio"].ToString().Equals("") ? DateTime.MinValue : Convert.ToDateTime(registro["DataUltimoNegocio"].ToString())); info.LotePadrao = (registro["LotePadrao"].ToString().Equals("") ? 0 : Convert.ToInt32(registro["LotePadrao"].ToString())); info.IndicadorOpcao = registro["IndicadorOpcao"].ToString(); info.PrecoExercicio = (registro["PrecoExercicio"].ToString().Equals("") ? 0 : Convert.ToDouble(registro["PrecoExercicio"].ToString())); info.DataVencimento = (registro["DataVencimento"].ToString().Equals("") ? DateTime.MinValue : Convert.ToDateTime(registro["DataVencimento"].ToString())); info.CodigoPapelObjeto = registro["CodigoPapelObjeto"].ToString(); info.SegmentoMercado = registro["SegmentoMercado"].ToString(); info.CoeficienteMultiplicacao = (registro["CoeficienteMultiplicacao"].ToString().Equals("") ? 0 : Convert.ToDouble(registro["CoeficienteMultiplicacao"].ToString())); info.DataRegistro = (registro["DataRegistro"].ToString().Equals("") ? DateTime.MinValue : Convert.ToDateTime(registro["DataRegistro"].ToString())); info.CodigoISIN = registro["CodigoISIN"].ToString(); ret.Add(info.Instrumento, info); } } catch (Exception e) { logger.Error("Erro procedure[" + procedure + "] Mensagem: [" + e.Message + "]", e); } finally { conn.Close(); conn.Dispose(); command.Connection.Close(); command.Dispose(); command = null; } logger.Debug("Preparando Resposta " + procedure + " qtdItens[" + ret.Count + "]"); return(ret); }