コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }