public async Task <ReturnFlight> FindCheapestReturnFlight(FindCheapestReturnFlightCriteria criteria)
        {
            var request = PegasusApiUtils.GetReturnFlightRequest(criteria);

            var response = await PegasusApiUtils.ExecuteFindReturnFlightsRequest(_httpClient, request).ConfigureAwait(true);

            var results = PegasusApiUtils.ParseReturnFlightResults(
                response,
                criteria.FromAirport,
                criteria.ToAirport,
                criteria.DepartureDate,
                criteria.ReturnDate).ToList();

            var departureFlight = results
                                  .Where(x => x.From == criteria.FromAirport && criteria.DepartureFlightsFilter.IsSatisfiedBy(x))
                                  .GetCheapestFlight();

            var returnFlight = results
                               .Where(x => x.To == criteria.FromAirport && criteria.ReturnFlightsFilter.IsSatisfiedBy(x))
                               .GetCheapestFlight();

            if (departureFlight != null && returnFlight != null)
            {
                return(new ReturnFlight(departureFlight, returnFlight));
            }

            return(null);
        }
Exemple #2
0
 public static PegasusApiFlightSearchRequest GetReturnFlightRequest(FindCheapestReturnFlightCriteria criteria)
 {
     return(new PegasusApiFlightSearchRequest
     {
         Affiliate = new PegasusApiFlightSearchRequest.AffiliateContent(),
         FfRedemption = false,
         AdultCount = 1,
         ChildCount = 0,
         InfantCount = 0,
         SoldierCount = 0,
         Currency = "GBP",
         DateOption = 1,
         OpenFlightSearch = false,
         PersonnelFlightSearch = false,
         OperationCode = "TK",
         FlightSearchList = new List <PegasusApiFlightSearchRequest.FlightSearchItem>
         {
             new PegasusApiFlightSearchRequest.FlightSearchItem
             {
                 DeparturePort = criteria.FromAirport,
                 ArrivalPort = criteria.ToAirport,
                 DepartureDate = criteria.DepartureDate.ToDateTimeUnspecified().ToString("yyyy-MM-dd"),
                 ReturnDate = criteria.ReturnDate.ToDateTimeUnspecified().ToString("yyyy-MM-dd")
             }
         }
     });
 }