public void Adicionar(ForecastET forecast) { var forecastExiste = _forecastRepository .Buscar(forecast.IdCelula, forecast.IdCliente, forecast.IdServico, forecast.NrAno); ForecastET forecastAnoSeguinteExiste = null; if (forecast.DataAniversario != null) { forecastAnoSeguinteExiste = forecast.DataAniversario.Value.Year > forecast.NrAno ? _forecastRepository.Buscar(forecast.IdCelula, forecast.IdCliente, forecast.IdServico, forecast.DataAniversario.Value.Year) : null; } if (forecastExiste != null || forecastAnoSeguinteExiste != null) { throw new ArgumentException($"Um Forecast para esta Célula, Cliente, Serviço e Ano já existe"); } _forecastRepository.Adicionar(forecast); if (forecast.DataAniversario.HasValue && forecast.DataAniversario.Value.Year > forecast.NrAno) { var forecastDoAnoSeguinte = CriarEntidadeForecastDoAnoSeguinte(forecast, AtribuirValoresDosMesesParaAnoSeguinteAdicao); var forecastDoSegundoAnoSeguinte = CriarEntidadeForecastDoAnoSeguinte(forecastDoAnoSeguinte, AtribuirValoresDosMesesParaAnoSeguinteAdicao); _forecastRepository.Adicionar(forecastDoAnoSeguinte); _forecastRepository.Adicionar(forecastDoSegundoAnoSeguinte); } _unitOfWork.Commit(); }
private void adicionarValorTotal(ForecastET forecastET) { forecastET.ValorForecast.ValorTotal = forecastET.ValorForecast.ValorJaneiro + forecastET.ValorForecast.ValorFevereiro + forecastET.ValorForecast.ValorMarco + forecastET.ValorForecast.ValorAbril + forecastET.ValorForecast.ValorMaio + forecastET.ValorForecast.ValorJunho + forecastET.ValorForecast.ValorJulho + forecastET.ValorForecast.ValorAgosto + forecastET.ValorForecast.ValorSetembro + forecastET.ValorForecast.ValorOutubro + forecastET.ValorForecast.ValorNovembro + forecastET.ValorForecast.ValorDezembro; }
private Decimal?obterValorTotal(ForecastET forecastET) { return(forecastET.ValorForecast.ValorJaneiro + forecastET.ValorForecast.ValorFevereiro + forecastET.ValorForecast.ValorMarco + forecastET.ValorForecast.ValorAbril + forecastET.ValorForecast.ValorMaio + forecastET.ValorForecast.ValorJunho + forecastET.ValorForecast.ValorJulho + forecastET.ValorForecast.ValorAgosto + forecastET.ValorForecast.ValorSetembro + forecastET.ValorForecast.ValorOutubro + forecastET.ValorForecast.ValorNovembro + forecastET.ValorForecast.ValorDezembro); }
public void Adicionar(ForecastET entity) { entity.Usuario = string.IsNullOrEmpty(_variables.UserName) ? "STFCORP" : _variables.UserName; if (entity.DataAlteracao == null) { entity.DataAlteracao = DateTime.Now; } DbSet.Add(entity); }
private void AtualizarEntidadeForecastAnoSeguinte(ForecastET forecast, ForecastET forecastAnoSeguinte) { forecastAnoSeguinte.DescricaoJustificativa = forecast.DescricaoJustificativa; forecastAnoSeguinte.IdStatus = forecast.IdStatus; forecastAnoSeguinte.DataAniversario = forecast.DataAniversario; forecastAnoSeguinte.DataAplicacaoReajuste = forecast.DataAplicacaoReajuste; forecastAnoSeguinte.DataReajusteRetroativo = forecast.DataReajusteRetroativo; forecastAnoSeguinte.ValorForecast.VlPercentual = forecast.ValorForecast.VlPercentual; forecastAnoSeguinte.ValorForecast.ValorAjuste = forecast.ValorForecast.ValorAjuste; AtribuirValoresDosMesesParaAnoSeguinteEdicao(forecast, forecastAnoSeguinte); }
private ForecastET CriarEntidadeForecastDoAnoSeguinte(ForecastET forecast, Action <ForecastET, ForecastET> funcAtribuicaoValorMeses) { ForecastET forecastDoAnoSeguinte = (ForecastET)forecast.Clone(); forecastDoAnoSeguinte.ValorForecast = (ValorForecast)forecast.ValorForecast.Clone(); forecastDoAnoSeguinte.NrAno++; forecastDoAnoSeguinte.ValorForecast.NrAno++; //AtribuirValoresDosMesesParaAnoSeguinte(forecast, forecastDoAnoSeguinte); funcAtribuicaoValorMeses(forecast, forecastDoAnoSeguinte); return(forecastDoAnoSeguinte); }
public void Atualizar(ForecastET forecast) { _forecastRepository.Update(forecast); var forecastAnoSeguinte = _forecastRepository .BuscarPorIdComIncludes(forecast.IdCelula, forecast.IdCliente, forecast.IdServico, forecast.NrAno + 1); if (forecast.DataAniversario != null && forecast.DataAniversario.Value.Year > forecast.NrAno) { if (forecastAnoSeguinte == null) { forecastAnoSeguinte = CriarEntidadeForecastDoAnoSeguinte (forecast, AtribuirValoresDosMesesParaAnoSeguinteEdicao); _forecastRepository.Adicionar(forecastAnoSeguinte); } else { AtualizarEntidadeForecastAnoSeguinte(forecast, forecastAnoSeguinte); _forecastRepository.Update(forecastAnoSeguinte); } var forecastSegundoAnoSeguinte = _forecastRepository .BuscarPorIdComIncludes(forecastAnoSeguinte.IdCelula, forecastAnoSeguinte.IdCliente, forecastAnoSeguinte.IdServico, forecastAnoSeguinte.NrAno + 1); if (forecastSegundoAnoSeguinte == null) { forecastSegundoAnoSeguinte = CriarEntidadeForecastDoAnoSeguinte (forecastAnoSeguinte, AtribuirValoresDosMesesParaAnoSeguinteEdicao); _forecastRepository.Adicionar(forecastSegundoAnoSeguinte); } else { AtualizarEntidadeForecastAnoSeguinte(forecastAnoSeguinte, forecastSegundoAnoSeguinte); _forecastRepository.Update(forecastSegundoAnoSeguinte); } } //if (forecast != null && forecast.ValorForecast != null && forecast.ValorForecast.VlPercentual != null) //{ // forecast.ValorForecast.VlPercentual = forecast.ValorForecast.VlPercentual * 100; //} //if (forecastAnoSeguinte != null && forecastAnoSeguinte.ValorForecast != null && forecastAnoSeguinte.ValorForecast.VlPercentual != null) //{ // forecastAnoSeguinte.ValorForecast.VlPercentual = forecastAnoSeguinte.ValorForecast.VlPercentual * 100; //} _unitOfWork.Commit(); }
private void AtribuirValoresDosMesesParaAnoSeguinteAdicao(ForecastET forecast, ForecastET forecastAnoSeguinte = null) { var mesesPropertiesList = forecast.ValorForecast.GetType().GetProperties().Where(x => Attribute.IsDefined(x, typeof(MonthNumber))); decimal?valorDoUltimoMesPreenchdo = 0; foreach (var mesProperty in mesesPropertiesList) { if ((decimal?)mesProperty.GetValue(forecast.ValorForecast) != 0) { valorDoUltimoMesPreenchdo = (decimal?)mesProperty.GetValue(forecast.ValorForecast); } } foreach (var mesProperty in mesesPropertiesList) { var numeroDoMes = (int)(mesProperty.CustomAttributes.FirstOrDefault().ConstructorArguments.FirstOrDefault().Value); //if (numeroDoMes <= forecast.DataAniversario.Value.Month) mesProperty.SetValue(forecastAnoSeguinte.ValorForecast, valorDoUltimoMesPreenchdo); //else // mesProperty.SetValue(forecastAnoSeguinte.ValorForecast, (decimal?)0); } }
private void AtribuirValoresDosMesesParaAnoSeguinteEdicao(ForecastET forecast, ForecastET forecastAnoSeguinte = null) { var mesesPropertiesList = forecast.ValorForecast.GetType().GetProperties() .Where(x => Attribute.IsDefined(x, typeof(MonthNumber))); decimal?valorAux = 0; //if (forecast.DataAniversario.Value.Year > forecast.NrAno) //{ foreach (var mesProperty in mesesPropertiesList) { if ((decimal?)mesProperty.GetValue(forecast.ValorForecast) != 0) { valorAux = (decimal?)mesProperty.GetValue(forecast.ValorForecast); } } //} //else //{ // var valorAniversario = (decimal?)forecast.ValorForecast.GetType().GetProperties() // .Where(x => x.CustomAttributes.Any(y => y.ConstructorArguments.Any(z => (int)z.Value == forecast.DataAniversario.Value.Month))) // .FirstOrDefault().GetValue(forecast.ValorForecast); // valorAux = valorAniversario; //} foreach (var mesProperty in mesesPropertiesList) { var numeroDoMes = (int)(mesProperty.CustomAttributes.FirstOrDefault().ConstructorArguments .FirstOrDefault().Value); //if (numeroDoMes >= forecast.DataReajusteRetroativo.Value.Month && numeroDoMes <= forecast?.DataAniversario.Value.Month) //mesProperty.SetValue(forecastAnoSeguinte.ValorForecast, valorAux + // (valorAux * (forecastAnoSeguinte.ValorForecast.VlPercentual))); mesProperty.SetValue(forecastAnoSeguinte.ValorForecast, valorAux); //else // mesProperty.SetValue(forecastAnoSeguinte.ValorForecast, (decimal?)0); } }
private DateTime?ObterDataAniversario(ForecastET forecastET) { DateTime?dataAniversario = null; if (forecastET.NrAno > 0) { var ano = forecastET.NrAno + 1; if (forecastET.ValorForecast.ValorJaneiro > 0) { dataAniversario = new DateTime(ano, 1, 1); } if (forecastET.ValorForecast.ValorFevereiro > 0) { dataAniversario = new DateTime(ano, 2, 1); } if (forecastET.ValorForecast.ValorMarco > 0) { dataAniversario = new DateTime(ano, 3, 1); } if (forecastET.ValorForecast.ValorAbril > 0) { dataAniversario = new DateTime(ano, 4, 1); } if (forecastET.ValorForecast.ValorMaio > 0) { dataAniversario = new DateTime(ano, 5, 1); } if (forecastET.ValorForecast.ValorJunho > 0) { dataAniversario = new DateTime(ano, 6, 1); } if (forecastET.ValorForecast.ValorJulho > 0) { dataAniversario = new DateTime(ano, 7, 1); } if (forecastET.ValorForecast.ValorAgosto > 0) { dataAniversario = new DateTime(ano, 8, 1); } if (forecastET.ValorForecast.ValorSetembro > 0) { dataAniversario = new DateTime(ano, 9, 1); } if (forecastET.ValorForecast.ValorOutubro > 0) { dataAniversario = new DateTime(ano, 10, 1); } if (forecastET.ValorForecast.ValorNovembro > 0) { dataAniversario = new DateTime(ano, 11, 1); } if (forecastET.ValorForecast.ValorDezembro > 0) { dataAniversario = new DateTime(ano, 12, 1); } } return(dataAniversario); }
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(); } }
public ForecastET VerificarSeRegistroExiste(ForecastET forecast) { return(_forecastRepository.Buscar(forecast.IdCelula, forecast.IdCliente, forecast.IdServico, forecast.NrAno)); }
public void Update(ForecastET forecast) { _context.Entry(forecast); DbSet.Update(forecast); AtualizarDataAlteracaoEUsuario(); }