private void InitializeBetAndBankValueLimits(SettingsAndInfoViewModel model)
        {
            List <StateJson>    stages    = _dataService.GetStates();
            List <ForecastJson> forecasts = _dataService.GetForecasts();

            var betValueLimits = new Dictionary <RepresentsValueType, decimal>
            {
                [RepresentsValueType.Min] = stages.Any() ? stages.Min(x => x.InitialBet) : 0,
                [RepresentsValueType.Avg] = stages.Any() ? Math.Round(stages.Average(x => x.InitialBet), 2) : 0,
                [RepresentsValueType.Max] = stages.Any() ? stages.Max(x => x.InitialBet) : 0
            };

            var bankValueLimits = new Dictionary <RepresentsValueType, decimal>
            {
                [RepresentsValueType.Min] = stages.Any() ? stages.Min(x => x.Bank) : 0,
                [RepresentsValueType.Avg] = stages.Any() ? Math.Round(stages.Average(x => x.Bank), 2) : 0,
                [RepresentsValueType.Max] = stages.Any() ? stages.Max(x => x.Bank) : 0
            };

            var coefficientAverages = new Dictionary <GameResultType, double>
            {
                [GameResultType.Win]    = forecasts.Any() ? forecasts.Where(x => x.GameResultType == GameResultType.Win).Average(x => x.Coefficient) : 0,
                [GameResultType.Defeat] = forecasts.Any() ? forecasts.Where(x => x.GameResultType == GameResultType.Defeat).Average(x => x.Coefficient) : 0,
                [GameResultType.RefundOrCancellation] = forecasts.Any() ? forecasts.Where(x => x.GameResultType == GameResultType.RefundOrCancellation).Average(x => x.Coefficient) : 0,
                [GameResultType.Expectation]          = forecasts.Any() ? forecasts.Where(x => x.GameResultType == GameResultType.Expectation).Average(x => x.Coefficient) : 0
            };

            model.LastState.BetValueLimits      = betValueLimits;
            model.LastState.BankValueLimits     = bankValueLimits;
            model.LastState.CoefficientAverages = coefficientAverages;
        }
        public IActionResult GetSettingsAndInfoPartial()
        {
            var model = new SettingsAndInfoViewModel();

            StateJson    lastState = _dataService.GetLastState();
            SettingsJson settings  = _dataService.GetSettings();

            model.Settings  = _mapper.Map <SettingsJson, SettingsViewModel>(settings);
            model.LastState = _mapper.Map <StateJson, StateViewModel>(lastState);
            model.LastState.ThreadNumbers = settings.ThreadNumbers;

            InitializeBetAndBankValueLimits(model);

            return(PartialView("_SettingsAndInfoPartial", model));
        }