public async Task <IActionResult> Index(AllFlightsViewModel model) { int page = model.PageNumber; switch (model.Action) { case ControllerActions.ActionPreviousPage: page -= 1; break; case ControllerActions.ActionNextPage: page += 1; break; default: break; } // Need to clear model state here or the page number that was posted // is returned and page navigation doesn't work correctly. So, capture // and amend the page number, above, then apply it, below ModelState.Clear(); List <Flight> flights = await _client.GetFlightsAsync(page, _settings.Value.FlightSearchPageSize); model.SetFlights(flights, page, _settings.Value.FlightSearchPageSize); return(View(model)); }
public IActionResult ArchiveFilter(AllFlightsViewModel model) { FlightFilteringAndPaging.ClearFilter(); FlightFilteringAndPaging.FilterType = model.FilterType; FlightFilteringAndPaging.Filter = model.Filter; return(View("FlightsArchive", GetFlightsArchive())); }
public IActionResult FlightsFilter(AllFlightsViewModel model) { FlightFilteringAndPaging.ClearFilter(); FlightFilteringAndPaging.FilterType = model.FilterType; FlightFilteringAndPaging.Filter = model.Filter; return(View("Flights", GetAllUpcomingFlights())); }
public async Task <IActionResult> Index() { AllFlightsViewModel model = new AllFlightsViewModel(); List <Flight> flights = await _client.GetFlightsAsync(1, _settings.Value.FlightSearchPageSize); model.SetFlights(flights, 1, _settings.Value.FlightSearchPageSize); return(View(model)); }
public AllFlightsViewModel GetFlightsArchive(bool hasBeenRedirected = false) { if (hasBeenRedirected) { FlightFilteringAndPaging.Clear(); } List <Flight> validFlights = context.Flights.Where(x => x.Departure <= DateTime.Now).ToList(); if (FlightFilteringAndPaging.FilterType != FlightFilterType.None) { string filter = FlightFilteringAndPaging.Filter; switch (FlightFilteringAndPaging.FilterType) { case FlightFilterType.From: validFlights = validFlights.Where(flight => flight.From.Contains(filter)).ToList(); break; case FlightFilterType.To: validFlights = validFlights.Where(flight => flight.To.Contains(filter)).ToList(); break; } } var pageFlights = validFlights .Skip((FlightFilteringAndPaging.Pager.CurrentPage - 1) * FlightFilteringAndPaging.Pager.PageSize) .Take(FlightFilteringAndPaging.Pager.PageSize).ToList(); List <SingleFlightViewModel> flightsWithAppropriateData = new List <SingleFlightViewModel>(); foreach (var singleFlight in pageFlights) { SingleFlightViewModel flight = new SingleFlightViewModel() { Id = singleFlight.Id, From = singleFlight.From, To = singleFlight.To, Departure = singleFlight.Departure, Duration = singleFlight.Arrival - singleFlight.Departure }; flightsWithAppropriateData.Add(flight); } flightsWithAppropriateData = flightsWithAppropriateData.OrderByDescending(x => x.Departure).ToList(); AllFlightsViewModel model = new AllFlightsViewModel() { allFlights = flightsWithAppropriateData }; FlightFilteringAndPaging.Pager.PagesCount = (int)Math.Ceiling(validFlights.Count() / (double)FlightFilteringAndPaging.Pager.PageSize); return(model); }