public async Task <FlightSearchRS> AirLowFareSearchAsync(FlightSearchRQ request) { try { string result = await _SabreConnector.SendRequestAsync("/v3.2.0/shop/flights?mode=live&limit=200&offset=1&enabletagging=true", JsonConvert.SerializeObject(ConvertToAirLowFareSearchRQ(request), Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DateFormatString = "yyyy-MM-ddTHH:mm:ss" }), true); AirLowFareSearchRS rs = JsonConvert.DeserializeObject <AirLowFareSearchRS>(result); return(ConvertToSearchRS(rs)); } catch { return(null); } }
private FlightSearchRS ConvertToSearchRS(AirLowFareSearchRS airlowFare) { if (airlowFare?.Page == null) { return(null); } FlightSearchRS rs = new FlightSearchRS { RequestId = airlowFare.RequestId, Page = new TravelConnect.Models.Responses.Page { Size = airlowFare.Page.Size, Offset = airlowFare.Page.Offset, TotalTags = airlowFare.Page.TotalTags }, PricedItins = airlowFare.OTA_AirLowFareSearchRS .PricedItineraries.PricedItinerary.Select(a => { var ItinTotalFare = a.AirItineraryPricingInfo.Select(pi => pi.ItinTotalFare).FirstOrDefault(); var TotalFare = a.AirItineraryPricingInfo.Select(pi => pi.ItinTotalFare.TotalFare).FirstOrDefault(); var BaseFare = a.AirItineraryPricingInfo.Select(pi => pi.ItinTotalFare.BaseFare).FirstOrDefault(); var Taxes = a.AirItineraryPricingInfo.Select(pi => pi.ItinTotalFare.Taxes).FirstOrDefault(); if (TotalFare != null) { return(new PricedItin { TotalFare = new Fare { Curr = TotalFare.CurrencyCode, Amount = TotalFare.Amount }, BaseFare = new Fare { Curr = BaseFare.CurrencyCode, Amount = BaseFare.Amount }, Taxes = new Fare { Curr = Taxes.Tax[0].CurrencyCode, Amount = Taxes.Tax[0].Amount }, LastTicketDate = a.AirItineraryPricingInfo.FirstOrDefault()?.LastTicketDate, Legs = a.AirItinerary.OriginDestinationOptions .OriginDestinationOption.Select(dest => { return new Leg { Elapsed = dest.ElapsedTime, Segments = dest.FlightSegment.Select(seg => { return new SegmentRS { Origin = seg.DepartureAirport.LocationCode, Destination = seg.ArrivalAirport.LocationCode, Elapsed = seg.ElapsedTime, Departure = new Timing { Time = seg.DepartureDateTime, GmtOffset = seg.DepartureTimeZone.GMTOffset, }, Arrival = new Timing { Time = seg.ArrivalDateTime, GmtOffset = seg.ArrivalTimeZone.GMTOffset }, MarketingFlight = new FlightNumber { Airline = seg.MarketingAirline.Code, Number = seg.FlightNumber }, OperatingFlight = new FlightNumber { Airline = seg.OperatingAirline.Code, Number = seg.OperatingAirline.FlightNumber }, BookingCode = seg.ResBookDesigCode, MarriageGrp = seg.MarriageGrp }; }).ToList() }; }).ToList() }); } else { return(null); } }).ToList() }; return(rs); }