Ejemplo n.º 1
0
        public async Task <FlightSearchRS> AirLowFareSearchAsync(FlightSearchRQ request)
        {
            Task <FlightSearchRS> rs = RetrieveAirLowFareSearch(request);
            Task <FlightSearchRS> ow = null;

            if (request.Segments.Count > 1 || request.Airlines?.Count == 0)
            {
                request.Segments = new List <SegmentRQ>
                {
                    request.Segments.First()
                };
                ow = RetrieveAirLowFareSearch(request);
            }

            FlightSearchRS response = await rs;

            if (request.Segments.Count == 1 || (request.Airlines?.Count ?? 0) > 0)
            {
                response.Airlines = GetAirlines(response);
            }
            else
            {
                FlightSearchRS owResponse = await ow;
                response.Airlines = ((owResponse?.PricedItins?.Count ?? 0) > 0)
                    ? GetAirlines(owResponse)
                    : GetAirlines(response);
            }

            return(response);
        }
Ejemplo n.º 2
0
        private async Task <FlightSearchRS> RetrieveAirLowFareSearch(FlightSearchRQ request)
        {
            string         sRequest = "AirLowFare_" + JsonConvert.SerializeObject(request);
            FlightSearchRS cacheSearchRS;

            if (!_cache.TryGetValue(sRequest, out cacheSearchRS))
            {
                // Key not in cache, so get data from Sabre
                cacheSearchRS = await _AirService.AirLowFareSearchAsync(request);

                if (cacheSearchRS == null)
                {
                    cacheSearchRS = new FlightSearchRS
                    {
                        PricedItins = new List <PricedItin>()
                    };
                }
                else
                {
                    var cacheEntryOptions = new MemoryCacheEntryOptions()
                                            // Keep in cache for this time, reset time if accessed.
                                            .SetAbsoluteExpiration(TimeSpan.FromHours(1));

                    // Save data in cache.
                    _cache.Set(sRequest, cacheSearchRS, cacheEntryOptions);
                }
            }

            return(cacheSearchRS);
        }
Ejemplo n.º 3
0
 private List <string> GetAirlines(FlightSearchRS rs)
 {
     if (rs == null)
     {
         return(new List <string>());
     }
     return(rs.PricedItins.SelectMany(p => p.Legs.SelectMany(l => l.Segments.Select(s => s.MarketingFlight.Airline)))
            .Distinct().ToList());
 }
        public FlightSearchRS Search(FlightSearchRQ FlightSearchObj)
        {
            try
            {
                var SearchString = "flight-offers?originLocationCode=" + FlightSearchObj.OriginLocationCode.IataCode + "&destinationLocationCode=" + FlightSearchObj.DestinationLocationCode.IataCode + "&departureDate=" + FlightSearchObj.OriginLocationCode.DepartureDate.ToString("yyyy-MM-dd") + "&returnDate=" + FlightSearchObj.DestinationLocationCode.ReturnDate.ToString("yyyy-MM-dd") + "&adults=" + FlightSearchObj.Pax.Adult + "&nonStop=" + FlightSearchObj.NonStop.ToString().ToLower() + "&max=250";

                FlightSearchRS FlightOffersSearchRS = JsonConvert.DeserializeObject <FlightSearchRS>((string)SupplierConnectorSVCaller.AmadeusGetCall(SearchString, "/v2/shopping/"));

                return(FlightOffersSearchRS);
            }
            catch (Exception ErrorMessage)
            {
                Logger.LogError("return null with exeception", ErrorMessage);
                return(null);
            }
        }
        public FlightSearchRS Search(FlightSearchRQ FlightSearchObj)
        {
            try
            {
                switch (FlightSearchObj.Service)
                {
                case "FlightOfferSearchGet":
                    FlightSearchRS FlightSearchRespose = FlightSearchRPCaller.Search(FlightSearchObj);
                    return(FlightSearchRespose);



                default:
                    break;
                }
                Logger.LogError("return null ");
                return(null);
            }
            catch (Exception ErrorMessage)
            {
                Logger.LogError("return null with exeception", ErrorMessage);
                return(null);
            }
        }
Ejemplo n.º 6
0
        private FlightSearchRS ConvertToFlightSearchRS(LowFareSearchRsp response)
        {
            FlightSearchRS rs = new FlightSearchRS()
            {
                PricedItins = new List <PricedItin>(),
                RequestId   = response.TransactionId,
            };

            try
            {
                foreach (AirPricePoint p in ((AirPricePointList)response.Items.First()).AirPricePoint)
                {
                    List <List <int> > options = new List <List <int> >();
                    //_LogService.LogInfo("FlightOptionsList: ", pi.FlightOptionsList);
                    AllIndexOptions(ref options, p.AirPricingInfo.First().FlightOptionsList.ToList(),
                                    new List <int>(), 0);
                    //_LogService.LogInfo("all options", options);

                    foreach (var leg in options)
                    {
                        List <Models.Responses.Leg> legs = new List <Models.Responses.Leg>();
                        for (int legIdx = 0; legIdx < leg.Count(); legIdx++)
                        {
                            legs.Add(GenerateLeg(p.AirPricingInfo.First().FlightOptionsList[legIdx].Option[leg[legIdx]],
                                                 response.AirSegmentList.ToList()));
                        }

                        var a = p.AirPricingInfo.ToList().Select(ap => ap.FareInfoRef.ToList());

                        rs.PricedItins.Add(new PricedItin
                        {
                            TotalFare = new Fare
                            {
                                Amount = float.Parse(p.TotalPrice.Substring(3)),
                                Curr   = p.TotalPrice.Substring(0, 3)
                            },
                            BaseFare = new Fare
                            {
                                Amount = float.Parse(p.BasePrice.Substring(3)),
                                Curr   = p.BasePrice.Substring(0, 3)
                            },
                            Taxes = new Fare
                            {
                                Amount = float.Parse(p.Taxes.Substring(3)),
                                Curr   = p.Taxes.Substring(0, 3)
                            },
                            Legs      = legs,
                            FareInfos = GenerateFareInfos(
                                p.AirPricingInfo.ToList().Select(ap => ap.FareInfoRef.ToList()).ToList(),
                                response.FareInfoList.ToList(),
                                response.BrandList?.ToList() ?? new List <kestrel.AirService.Brand>())
                        });

                        p.AirPricingInfo.ToList().ForEach(pi =>
                        {
                        });
                    }
                }
                ;

                return(rs);
            }
            catch (Exception ex)
            {
                _LogService.LogException(ex, "uAPI.AirService.ConvertToFlightSearchRS");
                return(null);
            }
        }
Ejemplo n.º 7
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);
        }