public static void Salvar(IList <ExtratoConta> movimentacoesSalvar) { try { using (var dbContext = new TituloPublicoContext("financeDB")) { dbContext.ExtratoConta.AddRange(movimentacoesSalvar); dbContext.SaveChanges(); } } catch (Exception ex) { throw ex; } }
public void DownloadYear(int year, string pathToSave, TipoTituloPublicoBCB tipoTituloPublico) { string fileName = string.Empty; string urlFile = string.Empty; string pathToSaveTratado = string.Empty; try { using (var dbContext = new TituloPublicoContext("financeDB")) { if (string.IsNullOrEmpty(pathToSave)) { throw new InvalidOperationException("In order to download files, it is necessary to setup de path"); } pathToSaveTratado = SubstituirCamposPath(pathToSave, tipoTituloPublico, year); FormatarNomeArquivoLFT(year, tipoTituloPublico, ref fileName, ref urlFile); var CaminhoCompleto = string.Format(@"{0}{1}", pathToSaveTratado, fileName); if (Downloader.DownloadFile(fileName, pathToSaveTratado, urlFile)) { var dadosPlanilha = LerDadosSyncfusion(CaminhoCompleto); var cotacoesNovas = TransformarCotacoes(dadosPlanilha); var cotacoesAntigas = dbContext.CotacaoTituloPublicoTD; var defaultDates = (from cotacaoNova in cotacoesNovas select new { CodigoTitulo = cotacaoNova.CodigoTitulo, MinDataCotacao = DateTime.Today, MaxDataCotacao = DateTime.Today }).ToList() .Distinct(); var maxCotacaoTitulo = (from x in cotacoesAntigas group x by x.CodigoTitulo into y orderby y.Key select new { CodigoTitulo = y.Key, MinDataCotacao = y.Min(z => z.DataCotacao), MaxDataCotacao = y.Max(z => z.DataCotacao) }).ToList() .Distinct(); var dicionario = maxCotacaoTitulo.ToDictionary(p => p.CodigoTitulo); foreach (var umDefault in defaultDates) { if (!dicionario.ContainsKey(umDefault.CodigoTitulo)) { dicionario[umDefault.CodigoTitulo] = umDefault; } } var listaTotal = dicionario.Values.ToList(); var queryFiltraPendentes = (from cotacaoNova in cotacoesNovas from maxCotacao in listaTotal .Where(maxCot => maxCot.CodigoTitulo == cotacaoNova.CodigoTitulo && cotacaoNova.DataCotacao < maxCot.MinDataCotacao) select cotacaoNova); var registrosInserir = queryFiltraPendentes.ToList(); cotacoesAntigas.AddRange(registrosInserir); } dbContext.SaveChanges(); } } catch (Exception ex) { throw ex; } }