コード例 #1
0
        public IActionResult Create()
        {
            ScenarioCreateViewModel viewmodel = new ScenarioCreateViewModel();

            List <ILocation> locations;

            if (!cache.TryGetValue(CacheKeys.LOCATION, out locations))
            {
                locations = new List <ILocation>();
            }

            List <IVehicle> vehicles;

            if (!cache.TryGetValue(CacheKeys.VEHICLE, out vehicles))
            {
                vehicles = new List <IVehicle>();
            }


            viewmodel.setVehicles(vehicles);
            viewmodel.locations      = locations;
            viewmodel.scenario       = new Scenario();
            viewmodel.id             = viewmodel.scenario.id;
            viewmodel.scenario.start = DateTime.Now;

            cache.Set("ScenarioEdit", viewmodel.scenario);

            return(View(viewmodel));
        }
        public async Task <IActionResult> CreateTestScenario(string specificationId, [FromBody] ScenarioCreateViewModel vm)
        {
            Guard.ArgumentNotNull(specificationId, nameof(specificationId));
            Guard.ArgumentNotNull(vm, nameof(vm));

            if (!await _authorizationHelper.DoesUserHavePermission(User, specificationId, SpecificationActionTypes.CanCreateQaTests))
            {
                return(new ForbidResult());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            CreateScenarioModel createScenario = _mapper.Map <CreateScenarioModel>(vm);

            createScenario.SpecificationId = specificationId;

            ApiResponse <TestScenario> result = await _scenariosClient.CreateTestScenario(createScenario);

            if (result.StatusCode == HttpStatusCode.OK)
            {
                return(Ok(result.Content));
            }
            else
            {
                HttpStatusCode statusCode = result.StatusCode;

                _logger.Error("An error occurred while saving scenario. Status code from backend={statusCode} for specification {specificationId}", statusCode, specificationId);

                throw new InvalidOperationException($"An error occurred while saving scenario. Status code={result.StatusCode}");
            }
        }
コード例 #3
0
        public IActionResult Edit(string id)
        {
            ScenarioCreateViewModel viewmodel = new ScenarioCreateViewModel();

            List <ILocation> locations;

            if (!cache.TryGetValue(CacheKeys.LOCATION, out locations))
            {
                locations = new List <ILocation>();
            }

            List <IVehicle> vehicles;

            if (!cache.TryGetValue(CacheKeys.VEHICLE, out vehicles))
            {
                vehicles = new List <IVehicle>();
            }

            if (!cache.TryGetValue(CacheKeys.SCENARIO, out scenarios))
            {
                scenarios = new List <IScenario>();
            }

            foreach (Scenario s in scenarios)
            {
                if (s.id.Equals(id))
                {
                    locations.Add(s.location);
                    viewmodel.setVehicles(vehicles);
                    for (int i = 0; i < vehicles.Count; i++)
                    {
                        int count = 0;
                        foreach (Vehicle v in s.vehicles)
                        {
                            if (v.id.Equals(vehicles[i].id))
                            {
                                count++;
                            }
                        }
                        viewmodel.countVehicles[i] = count;
                    }
                    viewmodel.locations      = locations;
                    viewmodel.scenario       = s;
                    viewmodel.id             = viewmodel.scenario.id;
                    viewmodel.countRushhours = s.rushhours.Count;

                    cache.Set("ScenarioEdit", viewmodel.scenario);

                    scenarios.Remove(s);
                    cache.Set(CacheKeys.SCENARIO, scenarios);

                    return(View("Create", viewmodel));
                }
            }

            return(RedirectToAction("Index"));
        }
コード例 #4
0
        public IActionResult EditRushours(ScenarioCreateViewModel viewmodel)
        {
            List <ILocation> locations;

            if (!cache.TryGetValue(CacheKeys.LOCATION, out locations))
            {
                locations = new List <ILocation>();
            }

            List <IVehicle> vehicles;

            if (!cache.TryGetValue(CacheKeys.VEHICLE, out vehicles))
            {
                vehicles = new List <IVehicle>();
            }
            Scenario scenario = null;

            if (!cache.TryGetValue("ScenarioEdit", out scenario))
            {
                scenario = new Scenario();
            }

            scenario.start              = viewmodel.scenario.start;
            scenario.duration           = viewmodel.scenario.duration;
            scenario.bookingCountPerDay = viewmodel.scenario.bookingCountPerDay;

            if (viewmodel.idLocation.Equals("new"))
            {
                scenario.location      = new Location();
                scenario.location.name = "Neu";
            }
            else
            {
                foreach (ILocation l in locations)
                {
                    if (viewmodel.idLocation.Equals(l.id))
                    {
                        scenario.location = l.deepCopy();
                        break;
                    }
                }
            }

            scenario.vehicles = new List <Vehicle>();
            for (int i = 0; i < vehicles.Count; i++)
            {
                for (int j = 0; j < viewmodel.countVehicles[i]; j++)
                {
                    scenario.vehicles.Add((Vehicle)vehicles[i]);
                }
            }

            while (scenario.rushhours.Count > viewmodel.countRushhours)
            {
                scenario.rushhours.RemoveAt(scenario.rushhours.Count - 1);
            }

            for (int i = scenario.rushhours.Count; i < viewmodel.countRushhours; i++)
            {
                scenario.rushhours.Add(new Rushhour());
            }

            if (scenario.vehicles.Count == 0)
            {
                if (!cache.TryGetValue(CacheKeys.SCENARIO, out scenarios))
                {
                    scenarios = new List <IScenario>();
                }

                scenarios.Add(scenario);

                cache.Set(CacheKeys.SCENARIO, scenarios);

                return(RedirectToAction("Edit", "Simulation", new { id = scenario.id }));
            }

            if (viewmodel.countRushhours == 0)
            {
                return(View("EditLocationScenario", scenario.location));
            }

            return(View(new EditRushourViewModel(scenario)));
        }