public void RealizarMigracao() { List <ForecastET> forecasts = new List <ForecastET>(); List <ForecastET> forecastsPorAno = new List <ForecastET>(); var connectionStringEacesso = _connectionStrings.Value.EacessoConnection; using (IDbConnection dbConnection = new SqlConnection(connectionStringEacesso)) { dbConnection.Open(); var listaAno = ObterEfaturamentoAnos(dbConnection); listaAno.ForEach(ano => { var efaturamentoAgrupadoDtoLista = ObterEfaturamentoAgrupadoDto(dbConnection, ano).ToList(); foreach (var efaturamentoAgrupadoDto in efaturamentoAgrupadoDtoLista) { List <EfaturamentoAgrupadoDto> efaturamentoAgrupadoDtoGrupoLista = new List <EfaturamentoAgrupadoDto>(); try { var efaturamentoAgrupadoDtoGrupoExiste = forecastsPorAno.Any(e => e.IdCelula == efaturamentoAgrupadoDto.IdCelula && e.IdCliente == efaturamentoAgrupadoDto.IdCliente && e.IdServico == efaturamentoAgrupadoDto.IdServico && e.NrAno == ano ); if (!efaturamentoAgrupadoDtoGrupoExiste) { efaturamentoAgrupadoDtoGrupoLista = efaturamentoAgrupadoDtoLista.FindAll(e => e.IdCelula == efaturamentoAgrupadoDto.IdCelula && e.IdCliente == efaturamentoAgrupadoDto.IdCliente && e.IdServico == efaturamentoAgrupadoDto.IdServico && e.Ano == ano ); if (efaturamentoAgrupadoDtoGrupoLista != null && efaturamentoAgrupadoDtoGrupoLista.Count > 0) { var efaturamentoAgrupadoDtoGrupo = new EfaturamentoAgrupadoDto { IdCelula = efaturamentoAgrupadoDtoGrupoLista.First().IdCelula, IdCliente = efaturamentoAgrupadoDtoGrupoLista.First().IdCliente, IdServico = efaturamentoAgrupadoDtoGrupoLista.First().IdServico, Ano = efaturamentoAgrupadoDtoGrupoLista.First().Ano, ValorRecorrente = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrente), ValorRecorrenteNao = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrenteNao), ValorRecorrenteNovasVendas = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrenteNovasVendas), ValorRecorrentePerdas = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrentePerdas), ValorRecorrenteMultas = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrenteMultas), ValorRecorrenteRepactuacao = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrenteRepactuacao), ValorRecorrenteRepactuacaoRetro = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrenteRepactuacaoRetro), }; var forecastET = new ForecastET { IdCelula = efaturamentoAgrupadoDtoGrupo.IdCelula, IdCliente = efaturamentoAgrupadoDtoGrupo.IdCliente, IdServico = efaturamentoAgrupadoDtoGrupo.IdServico, NrAno = efaturamentoAgrupadoDtoGrupo.Ano, DataAplicacaoReajuste = ObterDataAplicacaoReajuste(dbConnection, efaturamentoAgrupadoDtoGrupo.IdCelula, efaturamentoAgrupadoDtoGrupo.IdCliente, efaturamentoAgrupadoDtoGrupo.IdServico, ano), DataReajusteRetroativo = ObterDataReajusteRetroativo(dbConnection, efaturamentoAgrupadoDtoGrupo.IdCelula, efaturamentoAgrupadoDtoGrupo.IdCliente, efaturamentoAgrupadoDtoGrupo.IdServico, ano), //IdStatus = 0, //TODO EM BRANCO Usuario = "Eacesso", DataAlteracao = DateTime.Now, //DescricaoJustificativa = "Teste de migração", ValorForecast = new ValorForecast { VlPercentual = ObterValorPercentual(efaturamentoAgrupadoDtoGrupo), ValorJaneiro = ObterValoreMes(ano, 1, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorFevereiro = ObterValoreMes(ano, 2, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorMarco = ObterValoreMes(ano, 3, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorAbril = ObterValoreMes(ano, 4, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorMaio = ObterValoreMes(ano, 5, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorJunho = ObterValoreMes(ano, 6, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorJulho = ObterValoreMes(ano, 7, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorAgosto = ObterValoreMes(ano, 8, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorSetembro = ObterValoreMes(ano, 9, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorOutubro = ObterValoreMes(ano, 10, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorNovembro = ObterValoreMes(ano, 11, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorDezembro = ObterValoreMes(ano, 12, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), Usuario = "Eacesso", DataAlteracao = DateTime.Now } }; adicionarValorTotal(forecastET); //TODO Data de Aniversário para vir em branco //forecastET.DataAniversario = ObterDataAniversario(forecastET); forecastsPorAno.Add(forecastET); } } } catch (Exception ex) { var erroMsg = "IdCelula:" + efaturamentoAgrupadoDtoGrupoLista.First().IdCelula.ToString() + " IdCliente: " + efaturamentoAgrupadoDtoGrupoLista.First().IdCliente.ToString() + " IdServico:" + efaturamentoAgrupadoDtoGrupoLista.First().IdServico.ToString(); AdicionarLogGenerico(ex, "Erro ao migrar dados FORECAST ano:" + ano.ToString(), erroMsg); continue; } } _forecastRepository.AdicionarRange(forecastsPorAno); _unitOfWork.Commit(); forecastsPorAno = new List <ForecastET>(); }); dbConnection.Close(); } }