public IActionResult Search() { FlightSearchViewModel viewModel = new FlightSearchViewModel { Adults = 1, Children = 0, Infants = 0, Date = DateTime.Today, SearchResults = new List <FlightInformation>() }; return(View(viewModel)); }
public ActionResult FlightSearch([Bind(Include = "BeginDepartureTimeRange,EndDepartureTimeRange,SeatsNeeded,Nonstop,RoundTrip")] FlightSearchViewModel model, int City1ID, int City2ID) { //datetime objects have a (yyyy,mm,dd,hh,mm,ss) so to get (yyyy,mm,dd,0,0,0) you subtract time of day //then to get the day after, you add 24 hrs if (model.BeginDepartureTimeRange < DateTime.Now.Date) { ViewBag.Error = "Begin time must be in future"; ViewBag.AllCities = GetAllCities(); return(View()); } if (model.EndDepartureTimeRange < DateTime.Now.Date) { ViewBag.AllCities = GetAllCities(); ViewBag.Error = "End time must be in future"; return(View()); } if (model.EndDepartureTimeRange < model.BeginDepartureTimeRange) { ViewBag.AllCities = GetAllCities(); ViewBag.Error = "End time must be after begin time"; return(View()); } if (City1ID == City2ID) { ViewBag.AllCities = GetAllCities(); ViewBag.Error = "You must pick different cities"; return(View()); } DateTime enddate = model.EndDepartureTimeRange - model.EndDepartureTimeRange.TimeOfDay + new TimeSpan(24, 0, 0); DateTime startdate = model.BeginDepartureTimeRange - model.BeginDepartureTimeRange.TimeOfDay; List <Flight> fquery = db.Flights.Where(d => d.DepartDateTime >= startdate && d.DepartDateTime <= enddate) .Where(d => d.Departed == false && d.Cancelled == false) .Where(c => c.SeatsAvailable >= model.SeatsNeeded).ToList(); fquery = fquery.Where(c => c.FlightNumber.startCity.CityID == City1ID).ToList(); City endcity = db.Cities.Find(City2ID); String endairport = endcity.Airport; fquery = fquery.Where(d => d.FlightNumber.endCityAirport == endairport).ToList(); Reservation newReservation = new Reservation(db); newReservation.RoundTrip = model.RoundTrip; db.Reservations.Add(newReservation); db.SaveChanges(); return(View("SelectedFlights", fquery)); }
public async Task <IActionResult> Search(string originCode, string destinationCode, int adults, int children, int infants, DateTime date) { if (!ModelState.IsValid) { return(NotFound()); } List <FlightInformation> searchResults = await _flightInfoService.FlightSearchAsync(originCode, destinationCode, adults, children, infants, date); FlightSearchViewModel viewModel = new FlightSearchViewModel { Adults = adults, Children = children, Infants = infants, Date = date, SearchResults = searchResults }; return(View(viewModel)); }
public ActionResult Search([Bind(Include = "DepartureAirport,ArrivalAirport,DepartureDate,ReturnDate,MaximumConnections,MaximumTime,MaximumPrice")] FlightSearchViewModel vm) { try { if (ModelState.IsValid) { var connections = Client.GetRoutes(vm.DepartureDate, vm.DepartureAirport, vm.ArrivalAirport, vm.MaximumConnections, vm.MaximumTime, vm.MaximumPrice); var bookings = connections.Select(c => new FlightConnectionViewModel(c)); return(View("Results", bookings)); } } catch (Exception /* dex */) { //Log the error (uncomment dex variable name and add a line here to write a log.) ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator."); } return(View(vm)); }
public ActionResult FlightSearch([Bind(Include = "BeginDepartureTimeRange,EndDepartureTimeRange")] FlightSearchViewModel model, int City1ID, int City2ID) { //datetime objects have a (yyyy,mm,dd,hh,mm,ss) so to get (yyyy,mm,dd,0,0,0) you subtract time of day //then to get the day after, you add 24 hrs DateTime enddate = model.EndDepartureTimeRange - model.EndDepartureTimeRange.TimeOfDay + new TimeSpan(24, 0, 0); DateTime startdate = model.BeginDepartureTimeRange - model.BeginDepartureTimeRange.TimeOfDay; List <Flight> fquery = db.Flights.Where(d => d.DepartDateTime >= startdate && d.DepartDateTime <= enddate).ToList(); fquery = fquery.Where(c => c.FlightNumber.startCity.CityID == City1ID).ToList(); City endcity = db.Cities.Find(City2ID); String endairport = endcity.Airport; fquery = fquery.Where(d => d.FlightNumber.endCityAirport == endairport).ToList(); return(View("Index", fquery)); }
// GET: Flights public async Task <IActionResult> Index(string toString, string fromString) { var flights = from f in _context.Flight select f; if (!string.IsNullOrEmpty(toString)) { flights = flights.Where(f => f.ToLocation.Contains(toString)); } if (!string.IsNullOrEmpty(fromString)) { flights = flights.Where(f => f.FromLocation.Contains(fromString)); } FlightSearchViewModel model = new FlightSearchViewModel { Flights = await flights.ToListAsync() }; Response.StatusCode = (int)HttpStatusCode.OK; return(View(model)); }