public void CheckDate(Tebaldi.BdiFeed.DataClass.State.BdiFileState bdiFile) { if (bdiFile.Header.DataDoPregao != bdiConfig.RequestedDate) { throw new Exceptions.ArquivoInvalido("Data do arquivo nao confere com a data requisitada."); } }
private void BdiToDataTable(Tebaldi.BdiFeed.DataClass.State.BdiFileState bdiFile) { try { FillCotacoes(bdiFile); FillIndices(bdiFile); } catch (Exception ex) { logger.Error("Erro no processamento do arquivo bdi", ex); throw; } }
private void FillIndices(Tebaldi.BdiFeed.DataClass.State.BdiFileState bdiFile) { foreach (Tebaldi.BdiFeed.DataClass.State.BdiFile.IndiceState indice in bdiFile.Indices) { DataRow row = Data.NewRow(); row["EXT_ID"] = indice.NomeIndice; row["ProcessId"] = Queue.Process.Id; row["AtivoId"] = 0; row["DataPregao"] = bdiFile.Header.DataDoPregao; row["NomeResumido"] = indice.NomeIndice; row["EspecPapel"] = "INDICE"; row["Ticker"] = indice.NomeIndice; row["TipoMercado"] = 99; row["PrecoAbertura"] = indice.IndiceAbertura; row["PrecoMaximo"] = indice.IndiceMaximo; row["PrecoMedio"] = indice.IndiceMedia; row["PrecoMinimo"] = indice.IndiceMinimo; row["PrecoFechamento"] = indice.IndiceFechamento; row["Quantidade"] = indice.QtdTitulosNegociadosIndice; row["TotalNegocios"] = indice.NegociosComAcoesDoIndice; row["Volume"] = indice.VolumeNegociosDoIndice; row["ISIN"] = ""; if (indice.OntemSinalEvolucao == "+") { row["Variacao"] = indice.OntemEvolucaoPercentual; } else { row["Variacao"] = -indice.OntemEvolucaoPercentual; } Data.Rows.Add(row); } }
public Tebaldi.BdiFeed.DataClass.State.BdiFileState ImportaBdi(bool dispose) { Tebaldi.BdiFeed.BdiHandler handler = new Tebaldi.BdiFeed.BdiHandler(config); Tebaldi.BdiFeed.DataClass.State.BdiFileState bdiFile = new Tebaldi.BdiFeed.DataClass.State.BdiFileState(); try { handler.DownloadBdiFile(); handler.DecompressBdiZip(); bdiFile = handler.ReadBdiFile(); handler.CheckDate(bdiFile); } catch (System.Net.WebException ex) { System.Net.HttpWebResponse errorResponse = ex.Response as System.Net.HttpWebResponse; if (errorResponse.StatusCode == System.Net.HttpStatusCode.NotFound) { logger.Info("QueueId: " + this.Queue.QueueId.ToString() + " - Erro no download do arquivo BDI Status Code: " + ex.Message); throw new Exceptions.DownloadError404Exception(); } else { throw; } } finally { if (dispose) { handler.Dispose(); } } return(bdiFile); }
private void FillCotacoes(Tebaldi.BdiFeed.DataClass.State.BdiFileState bdiFile) { foreach (Tebaldi.BdiFeed.DataClass.State.BdiFile.CotacaoState cotacao in bdiFile.Cotacoes) { DataRow row = Data.NewRow(); row["EXT_ID"] = cotacao.Ticker; row["ProcessId"] = Queue.Process.Id; row["AtivoId"] = 0; row["DataPregao"] = bdiFile.Header.DataDoPregao; row["NomeResumido"] = cotacao.NomeResumido; row["EspecPapel"] = cotacao.EspecificacaoPapel; row["Ticker"] = cotacao.Ticker; row["TipoMercado"] = cotacao.TipoDeMercado; row["PrecoAbertura"] = cotacao.PrecoAbertura; row["PrecoMaximo"] = cotacao.PrecoMaximo; row["PrecoMedio"] = cotacao.PrecoMedio; row["PrecoMinimo"] = cotacao.PrecoMinimo; row["PrecoFechamento"] = cotacao.PrecoFechamento; row["Quantidade"] = cotacao.Quantidade; row["TotalNegocios"] = cotacao.TotalNegocios; row["Volume"] = cotacao.Volume; row["ISIN"] = cotacao.CodISIN; if (cotacao.SinalOscilacao == "+") { row["Variacao"] = cotacao.Oscilacao / 100; } else { row["Variacao"] = -cotacao.Oscilacao / 100; } Data.Rows.Add(row); } }