/// <summary> /// Executes job operation. /// </summary> /// <param name="userConnection">The user connection.</param> /// <param name="parameters">The parameters.</param> public void Execute(UserConnection userConnection, IDictionary <string, object> parameters) { var forecastId = (Guid)parameters["ForecastId"]; var periodIds = parameters["PeriodIds"] as List <Guid>; var isUseSystemUser = (bool)parameters["IsUseSystemUser"]; _log.Info($"Forecast calculation started. ForecastId:{forecastId}"); var userConnectionForCalculation = userConnection; if (isUseSystemUser) { userConnectionForCalculation = userConnection.AppConnection.SystemUserConnection; } IForecastCalculator objectValueColumnsCalculator = GetForecastCalculator(userConnectionForCalculation, ForecastConsts.ObjectValueColumnTypeName); var forecastParams = new ForecastCalcParams(forecastId, periodIds); objectValueColumnsCalculator.Calculate(forecastParams); IForecastCalculator formulaColumnsCalculator = GetForecastCalculator(userConnectionForCalculation, ForecastConsts.FormulaColumnTypeName); formulaColumnsCalculator.Calculate(forecastParams); _log.Info($"Forecast calculation ended. ForecastId:{forecastId}"); CreateReminding(userConnection, forecastId); }
public async Task <ForecastResponseDto> Orchestration(ForecastRequestDto request) { try { IEnumerable <string> validationMessages = _validator.Validate(request); if (validationMessages != null && validationMessages.Any()) { return(new ForecastResponseDto(validationMessages)); } IBounds bounds = _boundsFactory.GetBounds(request.RiskLevel); IEnumerable <ForecastResponse> annualForecasts = await _forecastCalculator.Calculate(bounds, request); return(new ForecastResponseDto(annualForecasts)); } catch (Exception ex) { //logging here throw; } }
public async Task <IEnumerable <ForecastResponseDTO> > Orchestration(RequestDTO request) { IBounds bounds = _boundsFactory.GetBounds(request.RiskLevel); return(await _forecastCalculator.Calculate(bounds, request)); }
private IEnumerable <AnnualForecast> Calculate(ForecastRequestDto request) { return(_forecastCalculator.Calculate(new MediumRiskBounds(), request)); }