public ActionResult Search(SearchTrainViewModel trainTicket) { ViewBag.Errors = new List<string>(); if (ModelState.IsValid) { DateTime departureTime = DateTime.Parse(trainTicket.DepartureTime) .AddHours(trainTicket.DepartureTimeHour); if (departureTime < DateTime.Now) { ModelState.AddModelError("AlreadyDeparted", "The time of departure for your search has already passed."); return View(nameof(this.Index), trainTicket); } var trainRoute = db.TrainRoutes .Where(r => r.Arrival.Name == trainTicket.Arrival) .Where(r => r.Departure.Name == trainTicket.Departure) .SingleOrDefault(); if (trainRoute == null) { ModelState.AddModelError("InvalidRoute", "Departure and arrival cities should be different."); return View(nameof(this.Index), trainTicket); } var trains = db.Trains .Where(t => t.DepartureTime >= departureTime) .Where(t => t.Route.Arrival.Name == trainRoute.Arrival.Name) .Where(t => t.Route.Departure.Name == trainRoute.Departure.Name) .OrderBy(t => t.DepartureTime) .Take(3) .Select(tr => new AvailableTrainViewModel() { Route = tr.Route, DepartureTime = tr.DepartureTime, Id = tr.Id, BusinessClassPassengersCount = (db.TrainTickets .Where(t => t.TrainId == tr.Id) .Where(t => t.IsConfirmed) .Where(t => t.IsBusinessClass) .Select(t => t.PassengersCount) .DefaultIfEmpty() .Sum()), EconomicClassPassengersCount = (db.TrainTickets .Where(t => t.TrainId == tr.Id) .Where(t => t.IsConfirmed) .Where(t => !t.IsBusinessClass) .Select(t => t.PassengersCount) .DefaultIfEmpty() .Sum()) }) .ToList(); return View(trains); } return View(); }
public ActionResult SearchTrains(SearchTrainViewModel searchTrainViewModel) { if (ModelState.IsValid) { return(RedirectToAction("GetTrains", new { FromStation = searchTrainViewModel.FromStation, ToStation = searchTrainViewModel.ToStation })); } return(View(searchTrainViewModel)); }
public ActionResult DisplayTrainDetails(SearchTrainViewModel searchTrainViewModel) //based on search result displaying train { TempData["JourneyDate"] = searchTrainViewModel.JourneyDate; List <TrainDetails> trainDetailsList = trainDetailsBL.SearchTrain(searchTrainViewModel.Source, searchTrainViewModel.Destination); //fetching train details list based in search result List <TrainDetailsViewModel> trainDetailsViewModelList = new List <TrainDetailsViewModel>(); //IEnumerable<TrainDetails> trainList = TrainDetailsBL.GetTrainDetails(); //Displaying Train Details foreach (TrainDetails train in trainDetailsList) { TrainDetailsViewModel trainDetailsViewModel = AutoMapper.Mapper.Map <TrainDetails, TrainDetailsViewModel>(train); //Automapping of objects trainDetailsViewModelList.Add(trainDetailsViewModel); } return(View(trainDetailsViewModelList)); }