public CalculateForecastErrorsTest(RepositoryFixture fixture) { _config = fixture.Config; _unitOfWork = fixture.UnitOfWork; _context = fixture.Context; _startDate = fixture.StartDate; _installationIds = fixture.InstallationIds; _minNumberOfMeasurements = fixture.Config.GetValue <short>( "AppSettings:AirlyApi:MinNumberOfMeasurements"); _forecastErrorsCalculator = new PlainForecastErrorsCalculator(_config); _context.Clear(); }
public async void DoWork(object state) { using (var scope = _serviceProvider.CreateScope()) { _unitOfWork = scope.ServiceProvider.GetRequiredService <UnitOfWork>(); var installations = await DownloadInstallationInfos(); if (installations.Count > 0) { var installationInfos = ConvertInstallations(installations); await UpdateInstallationInfos(installationInfos); } var newMeasurementsList = await DownloadAllAirQualityData(); if (newMeasurementsList.Count > 0) { var(newMeasurements, newForecasts) = await ConvertAllAirQualityData(newMeasurementsList); await SaveAllAirQualityData(newMeasurements, newForecasts); } for (int i = 0; i < _forecastErrorsCalculators.Count; i++) { _forecastErrorsCalculator = _forecastErrorsCalculators[i]; switch (_forecastErrorsCalculator) { case PlainForecastErrorsCalculator _: _forecastErrorsRepository = _unitOfWork.PlainForecastErrorRepository; break; case ScaleForecastErrorsCalculator _: _forecastErrorsRepository = _unitOfWork.ScaleForecastErrorRepository; break; } var(hourlyErrors, dailyErrors) = await CalculateForecastErrors(); await SaveForecastErrors(hourlyErrors, dailyErrors); var newTotalForecastErrors = await CalculateTotalForecastErrors(); await UpdateTotalForecastErrors(newTotalForecastErrors); } } }
public ProgramController( UnitOfWork unitOfWork, IForecastErrorsCalculator forecastErrorsCalculator = null, List <short> installationIds = null, short idForAllInstallations = -1, IAirlyMeasurementsDownloader airlyMeasurementsDownloader = null, IAirlyInstallationDownloader airlyInstallationDownloader = null, ForecastErrorsRepository forecastErrorsRepository = null, short minNumberOfMeasurements = 24, short installationUpdateDaysPeriod = 7) { _unitOfWork = unitOfWork; _forecastErrorsCalculator = forecastErrorsCalculator; _airlyMeasurementsDownloader = airlyMeasurementsDownloader; _airlyInstallationDownloader = airlyInstallationDownloader; _forecastErrorsRepository = forecastErrorsRepository; _installationIds = installationIds; _minNumberOfMeasurements = minNumberOfMeasurements; _idForAllInstallations = idForAllInstallations; _installationUpdateDaysPeriod = installationUpdateDaysPeriod; }