private bool ProcessarQuantidadesTeoricas(string indice, string arquivo) { try { Dictionary <string, double> listaQtdTeoricas = new Dictionary <string, double>(); string linha; StreamReader streamReader = new StreamReader(arquivo); while ((linha = streamReader.ReadLine()) != null) { if (linha != null && linha.Trim().Length > 0) { string[] parametros = linha.Split('\t'); string ativo = parametros[0].Trim(); double qtdTeorica; if (!double.TryParse(parametros[1].Replace(',', '.'), numberStyles, ciUS, out qtdTeorica)) { qtdTeorica = 0; } if (ativo.Length > 0 && qtdTeorica > 0) { listaQtdTeoricas.Add(ativo, qtdTeorica); } } } streamReader.Close(); if (listaQtdTeoricas.Count == 0) { logger.Error("Não há linhas válidas no arquivo lido!"); return(false); } logger.Info("Atualizando Quantidades Teoricas"); DCotacoes _DCotacoes = new DCotacoes(); logger.Info("Ativos lidos e tratados do arquivo: " + listaQtdTeoricas.Count); foreach (KeyValuePair <string, double> item in listaQtdTeoricas) { logger.Info("Gravando ComposicaoIndice Ativo[" + item.Key + "] QtdTeorica[" + item.Value + "]"); IndiceGradual.ItemComposicaoIndice itemComposicaoIndice = new IndiceGradual.ItemComposicaoIndice(); itemComposicaoIndice.ativo = item.Key; itemComposicaoIndice.qtdeTeorica = item.Value; itemComposicaoIndice.dataCotacao = DateTime.Now; _DCotacoes.AtualizarComposicaoIndiceGradual(indice, itemComposicaoIndice, true); } } catch (Exception ex) { logger.Error("Falha em ProcessarQuantidadesTeoricas(): " + ex.Message); return(false); } return(true); }
/// <summary> /// AtualizarComposicaoIndiceGradual - atualiza item na tabela tbIndiceGradual. /// </summary> /// <returns></returns> public void AtualizarComposicaoIndiceGradual(string indice, IndiceGradual.ItemComposicaoIndice item, bool atualizarQtdTeorica) { SqlConnection conn = null; try { conn = new SqlConnection(ConfigurationManager.AppSettings["OMSProducao"]); conn.Open(); SqlCommand Command = new SqlCommand(); Command.CommandType = CommandType.StoredProcedure; Command.Connection = conn; Command.CommandText = "prc_tbIndiceGradual_upd"; Command.Parameters.AddWithValue("@dsIndice", indice); Command.Parameters.AddWithValue("@idAtivo", item.ativo); Command.Parameters.AddWithValue("@Cotacao", item.cotacao); Command.Parameters.AddWithValue("@Variacao", item.variacao); Command.Parameters.AddWithValue("@QtdeAjustada", item.qtdeAjustada); if (atualizarQtdTeorica) { Command.Parameters.AddWithValue("@QtdeTeorica", item.qtdeTeorica); } else { Command.Parameters.AddWithValue("@QtdeTeorica", null); } Command.Parameters.AddWithValue("@dtCotacao", item.dataCotacao); Command.ExecuteNonQuery(); Command.Dispose(); } catch (SqlException ex) { logger.Error("AtualizarComposicaoIndiceGradual(): " + ex.Message + "-" + ex.ErrorCode, ex); } catch (Exception ex) { logger.Error("AtualizarComposicaoIndiceGradual(): " + ex.Message, ex); } finally { if (conn != null && conn.State == ConnectionState.Open) { conn.Close(); conn.Dispose(); } } }
/// <summary> /// ObterListaIndicesGradual - busca lista de índices Gradual /// </summary> /// <returns></returns> public List <IndiceGradual.ItemComposicaoIndice> ObterListaComposicaoIndiceGradual(int idIndice) { List <IndiceGradual.ItemComposicaoIndice> listaComposicaoIndice = new List <IndiceGradual.ItemComposicaoIndice>(); SqlConnection conn = null; try { conn = new SqlConnection(ConfigurationManager.AppSettings["OMSProducao"]); conn.Open(); SqlCommand Command = new SqlCommand(); Command.CommandType = CommandType.StoredProcedure; Command.Connection = conn; Command.CommandText = "prc_tbIndiceGradual_lst"; Command.Parameters.AddWithValue("@idIndice", idIndice); SqlDataReader dtDados = Command.ExecuteReader(); if (dtDados.HasRows) { while (dtDados.Read()) { IndiceGradual.ItemComposicaoIndice item = new IndiceGradual.ItemComposicaoIndice(); item.ativo = dtDados.GetSqlString(0).Value; item.qtdeTeorica = dtDados.IsDBNull(1) ? 0 : dtDados.GetSqlDecimal(1).ToDouble(); item.dataCotacao = dtDados.IsDBNull(2) ? new DateTime(1970, 1, 1) : dtDados.GetDateTime(2); listaComposicaoIndice.Add(item); } } } catch (SqlException ex) { logger.Error("ObterListaComposicaoIndiceGradual(): " + ex.Message + "-" + ex.ErrorCode, ex); } catch (Exception ex) { logger.Error("ObterListaComposicaoIndiceGradual(): " + ex.Message, ex); } finally { if (conn != null && conn.State == ConnectionState.Open) { conn.Close(); conn.Dispose(); } } return(listaComposicaoIndice); }