Пример #1
0
        /// <summary>
        /// Generates list of scenarios for the specified scenario types
        /// </summary>
        /// <param name="command">Model with base scenarios and settings</param>
        /// <returns>List of generated scenarios</returns>
        public IList <AutopilotScenarioModel> Engage(AutopilotEngageModel command)
        {
            var autopilotSettings  = _autopilotSettingsRepository.GetDefault();
            var flexibilityLevelId = command.FlexibilityLevelId != 0
                ? command.FlexibilityLevelId
                : autopilotSettings.DefaultFlexibilityLevelId;
            var autopilotRules     = GetAutopilotRules(flexibilityLevelId);
            var generatedScenarios = new List <AutopilotScenarioModel>();
            var now = DateTime.UtcNow;
            var scenarioTypesToGenerate = Enum.GetValues(typeof(AutopilotScenarioType))
                                          .Cast <AutopilotScenarioType>()
                                          .Skip(MaxAutopilotScenarios - autopilotSettings.ScenariosToGenerate)
                                          .ToList();

            foreach (var scenarioModel in command.Scenarios)
            {
                var(tightenPassIndex, loosenPassIndex) = scenarioModel.GetAutopilotPassIndexes();
                var tightenPass = scenarioModel.Passes[tightenPassIndex];
                var loosenPass  = scenarioModel.Passes[loosenPassIndex];

                if (tightenPassIndex == loosenPassIndex)
                {
                    tightenPass.AutopilotType = AutopilotPassType.TightenAndLoosenFrom;
                }
                else
                {
                    tightenPass.AutopilotType = AutopilotPassType.TightenFrom;
                    loosenPass.AutopilotType  = AutopilotPassType.LoosenFrom;
                }

                var autopilotPasses = new Dictionary <AutopilotPassType, AutopilotPassModel>
                {
                    {
                        AutopilotPassType.TightenALot,
                        BuildAutopilotPass(tightenPass, autopilotRules, AutopilotPassType.TightenALot, now, "AP Tighten A Lot Pass")
                    },
                    {
                        AutopilotPassType.TightenABit,
                        BuildAutopilotPass(tightenPass, autopilotRules, AutopilotPassType.TightenABit, now, "AP Tighten A Bit Pass")
                    },
                    {
                        AutopilotPassType.LoosenABit,
                        BuildAutopilotPass(loosenPass, autopilotRules, AutopilotPassType.LoosenABit, now, "AP Loosen A Bit Pass")
                    },
                    {
                        AutopilotPassType.LoosenALot,
                        BuildAutopilotPass(loosenPass, autopilotRules, AutopilotPassType.LoosenALot, now, "AP Loosen A Lot Pass")
                    }
                };

                foreach (var scenarioType in scenarioTypesToGenerate)
                {
                    generatedScenarios.Add(GenerateAutopilotScenarioByType(scenarioType, scenarioModel, autopilotPasses));
                }
            }

            return(generatedScenarios);
        }
Пример #2
0
        public IHttpActionResult GetDefault()
        {
            var autopilotSettings = _autopilotSettingsRepository.GetDefault();

            if (autopilotSettings == null)
            {
                return(NotFound());
            }

            return(Ok(Mappings.MapToAutopilotSettingsModel(autopilotSettings, _autopilotRuleRepository, _ruleRepository,
                                                           _ruleTypeRepository, _mapper)));
        }