public ActionResult SelectTrain(SelectTrainRequestModel request) { var dailyRoutes = railwayService.GetDailyRoutes( request.DepartureDate, request.StartStationId, request.DestinationStationId); var trains = new List <SelectTrainViewModel.TrainData>(); foreach (var dailyRoute in dailyRoutes) { var startTime = railwayService.CalculateArrivalDepartureTime(dailyRoute, request.StartStationId); var destinationTime = railwayService.CalculateArrivalDepartureTime(dailyRoute, request.DestinationStationId); var cars = new List <SelectTrainViewModel.TrainData.CarTypeData>(); foreach (var car in dailyRoute.Route.Train.Cars) { var carTypesData = new SelectTrainViewModel.TrainData.CarTypeData { CarTypeName = car.CarType.TypeName, Cost = railwayService.CalculateCost(dailyRoute, request.StartStationId, request.DestinationStationId, car.CarType), AvailableSeatCount = railwayService.CalculateAvailableSeats(dailyRoute, car.CarTypeId), }; cars.Add(carTypesData); } var trainData = new SelectTrainViewModel.TrainData { DailyRouteId = dailyRoute.DailyRouteId, TrainNumber = dailyRoute.Route.Train.TrainNumber, DepartureTime = startTime, ArrivalTime = destinationTime, TripTime = destinationTime - startTime, IsDeLuxe = dailyRoute.Route.Train.IsDeLuxe, IsElectronicRegistrationAvailable = dailyRoute.Route.Train.IsElectronicRegistrationAvailable, IsExpress = dailyRoute.Route.Train.IsElectronicRegistrationAvailable, Cars = cars }; trains.Add(trainData); } var formModel = new SelectTrainFormModel() { StartStationId = request.StartStationId, DestinationStationId = request.DestinationStationId, }; var model = new SelectTrainViewModel { CarTypes = railwayService.GetAllCarTypes(), Trains = trains, FormModel = formModel }; return(View(model)); }
public ActionResult SelectTrain([Bind(Prefix = "FormModel")] SelectTrainFormModel form) { var requestModel = new SelectCarRequestModel { DailyRouteId = form.DailyRouteId, StartStationId = form.StartStationId, DestinationStationId = form.DestinationStationId }; return(RedirectToAction("SelectCar", requestModel)); }