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); }
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") } } }); }