public async Task <FlightListModel> FilterFlights(Destination sd, Destination ed, Boolean t) { FlightListModel fl = new FlightListModel(); using var cmd = this.Connection.CreateCommand(); cmd.CommandText = @"SELECT * FROM Flights WHERE startDestination = '" + sd + "' AND endDestination ='" + ed + "'"; cmd.CommandText += t ? ";" :" AND numTransfers = 0;"; using (var reader = await cmd.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { var flight = new FlightModel() { flightId = reader.GetInt32(0), startDestination = (Destination)Enum.Parse(typeof(Destination), reader.GetString(1), true), endDestination = (Destination)Enum.Parse(typeof(Destination), reader.GetString(2), true), date = reader.GetDateTime(3), numTransfers = reader.GetInt32(4), numSeats = reader.GetInt32(5) }; fl.FlightList.Add(flight); } } return(fl); }
public FlightListModel GetFlights(FlightSearchModel flightSearch) { var flightsResult = new FlightListModel(); if (!DateTime.TryParse(flightSearch.DepartureDate, out DateTime departureDate)) { throw new Exception("Failed to parse Departure date."); } if (_flightData != null && _flightData.Any()) { //Roundtrip if (flightSearch.TripType.Equals("RT")) { if ((!DateTime.TryParse(flightSearch.ReturnDate, out DateTime returnDate))) { throw new Exception("Failed to parse Return date."); } //Rountrip Query - Departing Flights flightsResult.DepartingFlights = _flightData.Where(x => x.Origin.Equals(flightSearch.Origin, StringComparison.InvariantCultureIgnoreCase) && x.Destination.Equals(flightSearch.Destination, StringComparison.InvariantCultureIgnoreCase) && x.Departure.Date.Equals(departureDate.Date)) .OrderBy(x => x.Departure) .ThenBy(x => x.FlightNumber) .ThenBy(x => x.OriginName) .ThenBy(x => x.Destination) .ToList(); //Rountrip Query - Returning Flights flightsResult.ReturningFlights = _flightData.Where(x => x.Origin.Equals(flightSearch.Destination, StringComparison.InvariantCultureIgnoreCase) && x.Destination.Equals(flightSearch.Origin, StringComparison.InvariantCultureIgnoreCase) && (x.Departure.Date > returnDate.Date && x.Departure.Date >= departureDate.Date)) .OrderBy(x => x.Departure) .ThenBy(x => x.FlightNumber) .ThenBy(x => x.OriginName) .ThenBy(x => x.Destination) .ToList(); } else { //One-Way flightsResult.DepartingFlights = _flightData.Where(x => x.Origin.Equals(flightSearch.Origin, StringComparison.InvariantCultureIgnoreCase) && x.Destination.Equals(flightSearch.Destination, StringComparison.InvariantCultureIgnoreCase) && x.Departure.Date.Equals(departureDate.Date)) .OrderBy(x => x.Departure) .ThenBy(x => x.FlightNumber) .ThenBy(x => x.OriginName) .ThenBy(x => x.Destination) .ToList(); } } return(flightsResult); }
public async Task <IActionResult> Index() { FlightListModel fl = await MySqlDatabase.GetFlights(); return(View(fl)); }
public async Task <IActionResult> showFlights(Destination sd, Destination ed, Boolean transfers) { FlightListModel flights = await MySqlDatabase.FilterFlights(sd, ed, transfers); return(View("Index", flights)); }
public IActionResult Index() { FlightListModel flights = new FlightListModel(); return(View(flights)); }