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}"); } }
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")); }
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))); }