public IActionResult Add(RouteFormModel model) { var companyId = this.userManager.GetUserId(User); if (!this.companies.IsApproved(companyId)) { this.GenerateAlertMessage(WebConstants.Message.CompanyNotApproved, Alert.Warning); return(this.RedirectToAction(nameof(All))); } if (this.companies.IsBlocked(companyId)) { this.GenerateAlertMessage(WebConstants.Message.AddRouteCompanyBlocked, Alert.Warning); return(this.RedirectToAction(nameof(All))); } if (!this.stations.StationExist(model.StartStation) || !this.stations.StationExist(model.EndStation)) { this.GenerateAlertMessage(WebConstants.Message.InvalidStation, Alert.Warning); return(this.RedirectToAction(nameof(All))); } if (model.StartStation == model.EndStation || this.stations.AreStationsInSameTown(model.StartStation, model.EndStation)) { ModelState.AddModelError(string.Empty, WebConstants.Message.StartStationEqualToEndStation); model.TownsStations = this.GenerateTownStationsSelectListItems(); return(View(model)); } if (!ModelState.IsValid) { model.TownsStations = this.GenerateTownStationsSelectListItems(); return(View(model)); } var isAdded = this.routes.Add(model.StartStation, model.EndStation, model.DepartureTime.TimeOfDay, model.Duration, model.BusType, model.Price, companyId); if (!isAdded) { model.TownsStations = this.GenerateTownStationsSelectListItems(); ModelState.AddModelError(string.Empty, WebConstants.Message.CompanyRouteDuplication); return(View(model)); } var startTownName = this.towns.GetTownNameByStationId(model.StartStation); var endTownName = this.towns.GetTownNameByStationId(model.EndStation); this.GenerateAlertMessage(string.Format(WebConstants.Message.RouteAdded, startTownName, endTownName), Alert.Success); return(RedirectToAction(nameof(All))); }
private void AssertRouteFormModelProperties(int startStationId, int endStationId, RouteFormModel form, object viewResult) { viewResult.Should().BeOfType <RouteFormModel>(); form.BusType.Should().Be(BusType.Mini); form.DepartureTime.Should().Be(DepartureDateTime); form.Duration.Should().Be(Duration); form.StartStation.Should().Be(startStationId); form.EndStation.Should().Be(endStationId); form.Price.Should().Be(Price); }
public IActionResult Edit(RouteFormModel model, int id) { var companyId = this.userManager.GetUserId(User); if (!this.routes.IsRouteOwner(id, companyId)) { this.GenerateAlertMessage(WebConstants.Message.InvalidRoute, Alert.Danger); return(RedirectToAction(nameof(All))); } if (!this.companies.IsApproved(companyId)) { this.GenerateAlertMessage(WebConstants.Message.ChangeRouteCompanyNotApproved, Alert.Warning); return(this.RedirectToAction(nameof(All))); } if (this.companies.IsBlocked(companyId)) { this.GenerateAlertMessage(WebConstants.Message.ChangeRouteCompanyBlocked, Alert.Warning); return(this.RedirectToAction(nameof(All))); } if (!ModelState.IsValid) { model.TownsStations = this.GenerateTownStationsSelectListItems(); model.IsEdit = true; return(View(model)); } var alreadyExists = this.routes.RouteAlreadyExist(id, model.StartStation, model.EndStation, model.DepartureTime.TimeOfDay, companyId); if (alreadyExists) { model.TownsStations = this.GenerateTownStationsSelectListItems(); model.IsEdit = true; ModelState.AddModelError(string.Empty, WebConstants.Message.CompanyRouteDuplication); return(View(model)); } var startTownName = this.towns.GetTownNameByStationId(model.StartStation); var endTownName = this.towns.GetTownNameByStationId(model.EndStation); if (this.routes.HasReservedTickets(id, companyId)) { this.GenerateAlertMessage(string.Format(WebConstants.Message.EditRouteWithTickets, startTownName, endTownName), Alert.Danger); return(RedirectToAction(nameof(All))); } var success = this.routes.Edit(id, model.StartStation, model.EndStation, model.DepartureTime.TimeOfDay, model.Duration, model.BusType, model.Price, companyId); if (!success) { this.GenerateAlertMessage(WebConstants.Message.InvalidRoute, Alert.Danger); return(RedirectToAction(nameof(All))); } this.GenerateAlertMessage(string.Format(WebConstants.Message.RouteEdited, startTownName, endTownName), Alert.Success); return(RedirectToAction(nameof(All))); }