/// <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;
            }
        }
Beispiel #3
0
        public async Task <IEnumerable <ForecastResponseDTO> > Orchestration(RequestDTO request)
        {
            IBounds bounds = _boundsFactory.GetBounds(request.RiskLevel);

            return(await _forecastCalculator.Calculate(bounds, request));
        }
Beispiel #4
0
 private IEnumerable <AnnualForecast> Calculate(ForecastRequestDto request)
 {
     return(_forecastCalculator.Calculate(new MediumRiskBounds(), request));
 }