Esempio n. 1
0
        private async Task <LowFareSearchRsp> SubmitAirLowFareSearchAsync(FlightSearchRQ request, JourneyType journeyType)
        {
            AirLowFareSearchPortTypeClient client;
            var binding = GenerateBasicHttpBinding();

            try
            {
                var endpoint = new EndpointAddress("https://apac.universal-api.pp.travelport.com/B2BGateway/connect/uAPI/AirService");

                client = new AirLowFareSearchPortTypeClient(binding, endpoint);

                var httpHeaders = Helper.ReturnHttpHeader();
                client.Endpoint.EndpointBehaviors.Add(new HttpHeadersEndpointBehavior(httpHeaders));

                var req = ConvertToLowFareSearchReq(request, journeyType);
                _LogService.LogInfo($"uAPI/LowFareSearchReq_{journeyType}", req);

                var response = await client.serviceAsync(null, req);

                _LogService.LogInfo($"uAPI/LowFareSearchRsp_{journeyType}", response);
                return(response.LowFareSearchRsp);
            }
            catch (Exception ex)
            {
                _LogService.LogException(ex, $"uAPI.AirService.SubmitAirLowFareSearchAsync_{journeyType}");
                return(null);
            }
            finally
            {
                client  = null;
                binding = null;
            }
        }
Esempio n. 2
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);
        }
Esempio n. 3
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);
        }
        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);
            }
        }
Esempio n. 5
0
        public async Task <FlightSearchRS> AirLowFareSearchAsync(FlightSearchRQ request)
        {
            _LogService = new LogService();

            try
            {
                _LogService.LogInfo($"FlightSearchRQ", request);

                LowFareSearchRsp departAndReturnResult = null;
                LowFareSearchRsp departOnlyResult      = null;
                LowFareSearchRsp returnOnlyResult      = null;

                Task <LowFareSearchRsp> departAndReturnTask = null;
                Task <LowFareSearchRsp> returnOnlyTask      = null;

                if (request.Segments.Count == 2)
                {
                    //Depart and Return Flight
                    departAndReturnTask = SubmitAirLowFareSearchAsync(request, JourneyType.DepartAndReturn);

                    //Return Only Flight
                    returnOnlyTask = SubmitAirLowFareSearchAsync(request, JourneyType.ReturnOnly);
                }

                //Depart Only Flight
                Task <LowFareSearchRsp> departOnlyTask =
                    SubmitAirLowFareSearchAsync(request, JourneyType.DepartOnly);

                departOnlyResult = await departOnlyTask;

                if (request.Segments.Count == 2)
                {
                    departAndReturnResult = await departAndReturnTask;
                    returnOnlyResult      = await returnOnlyTask;
                }

                var response = ConvertToFlightSearchRS(departAndReturnResult);
                _LogService.LogInfo($"FlightSearchRS", response);

                return(response);
            }
            catch (Exception ex)
            {
                _LogService.LogException(ex, "uAPI.AirService.AirLowFareSearchAsyc");
                throw;
            }
        }
Esempio n. 6
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);
            }
        }
        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);
            }
        }
Esempio n. 8
0
        private LowFareSearchReq ConvertToLowFareSearchReq(FlightSearchRQ request, JourneyType journeyType)
        {
            if (request.Segments.Count == 0)
            {
                throw new  ApplicationException("Segment is required");
            }
            //Segments
            IEnumerable <SearchAirLeg> SearchAirLegs = new List <SearchAirLeg>();

            switch (journeyType)
            {
            case JourneyType.DepartAndReturn:
                if (request.Segments.Count == 1)
                {
                    throw new ApplicationException("2 segment is request to generate Depart and Return journey");
                }
                SearchAirLegs = request.Segments.OrderBy(s => s.Departure).Select(s =>
                                                                                  GenerateSearchAirLeg(s.Origin, true, s.Destination, true, s.Departure));
                break;

            case JourneyType.DepartOnly:
                SearchAirLegs = request.Segments.OrderBy(s => s.Departure).Take(1).Select(s =>
                                                                                          GenerateSearchAirLeg(s.Origin, true, s.Destination, true, s.Departure));
                break;

            case JourneyType.ReturnOnly:
                if (request.Segments.Count == 1)
                {
                    throw new ApplicationException("2 segment is request to generate Return Only journey");
                }

                SearchAirLegs = request.Segments.OrderBy(s => s.Departure).Skip(1).Take(1).Select(s =>
                                                                                                  GenerateSearchAirLeg(s.Origin, true, s.Destination, true, s.Departure));
                break;
            }


            AirSearchModifiers airSearchModifiers = new AirSearchModifiers
            {
                PreferredProviders = new Provider[] { new Provider {
                                                          Code = "1G"
                                                      } }
            };

            AirPricingModifiers airPricingModifiers = new AirPricingModifiers
            {
                ETicketabilitySpecified = true,
                ETicketability          = typeEticketability.Required,
                FaresIndicatorSpecified = true,
                FaresIndicator          = typeFaresIndicator.AllFares,
            };

            //Passengers
            var SearchPassengers = new List <SearchPassenger>();

            request.Ptcs.ForEach(p =>
            {
                for (int i = 1; i <= p.Quantity; i++)
                {
                    SearchPassengers.Add(new SearchPassenger
                    {
                        Code = p.Code == "CNN" ? "CHD" : p.Code,
                        Age  = p.Code == "CNN" ? "8" : null,
                    });
                }
            });

            LowFareSearchReq req = new LowFareSearchReq
            {
                BillingPointOfSaleInfo = new kestrel.AirService.BillingPointOfSaleInfo
                {
                    OriginApplication = "uAPI"
                },
                TargetBranch = "P7073862",
                MaxNumberOfExpertSolutions = "50",
                SolutionResult             = false,
                Items = SearchAirLegs.ToArray(),
                AirSearchModifiers  = airSearchModifiers,
                AirPricingModifiers = airPricingModifiers,
                SearchPassenger     = SearchPassengers.ToArray(),
                ReturnUpsellFare    = true
            };

            return(req);
        }
 public JsonResult Search(FlightSearchRQ FlightSearchRQ)
 {
     return(Json(IFlightOfferSVCaller.Search(FlightSearchRQ)));
 }
Esempio n. 10
0
 public async Task <FlightSearchRS> Post([FromBody] FlightSearchRQ request)
 {
     return(await _AirService.AirLowFareSearchAsync(request));
 }
Esempio n. 11
0
        private AirLowFareSearchRQ ConvertToAirLowFareSearchRQ(FlightSearchRQ request)
        {
            if (request.Airlines == null)
            {
                request.Airlines = new List <string>();
            }
            AirLowFareSearchRQ rq = new AirLowFareSearchRQ();
            int segmentIndex      = 1;

            rq.OTA_AirLowFareSearchRQ = new OTA_Airlowfaresearchrq
            {
                AvailableFlightsOnly = request.AvailableFlightsOnly,
                DirectFlightsOnly    = request.DirectFlightsOnly,
                Target = "Production",
                POS    = new POS
                {
                    Source = new Source[]
                    {
                        new Source
                        {
                            PseudoCityCode = "F9CE",
                            RequestorID    = new Requestorid
                            {
                                Type        = "1",
                                ID          = "1",
                                CompanyName = new Companyname()
                            }
                        }
                    }
                },
                OriginDestinationInformation = request.Segments.Select(s =>
                                                                       new Origindestinationinformation
                {
                    RPH = (segmentIndex++).ToString(),
                    DepartureDateTime = s.Departure,
                    OriginLocation    = new Originlocation
                    {
                        LocationCode = s.Origin
                    },
                    DestinationLocation = new Destinationlocation
                    {
                        LocationCode = s.Destination
                    }
                }).ToArray(),
                TravelerInfoSummary = new Travelerinfosummary
                {
                    SeatsRequested   = new int[] { 1 },
                    AirTravelerAvail = new Airtraveleravail[]
                    {
                        new Airtraveleravail
                        {
                            PassengerTypeQuantity = request.Ptcs.Select(p =>
                                                                        new TravelConnect.Models.Requests.Passengertypequantity
                            {
                                Code       = p.Code,
                                Quantity   = p.Quantity,
                                Changeable = false
                            }
                                                                        ).ToArray()
                        }
                    },

                    //PriceRequestInformation = new Pricerequestinformation
                    //{
                    //    CurrencyCode = "THB",
                    ////    NegotiatedFaresOnly = true,
                    //}
                },
                TravelPreferences = new Travelpreferences
                {
                    CabinPref = new Cabinpref[]
                    {
                        new Cabinpref
                        {
                            Cabin       = "Y",
                            PreferLevel = "Preferred"
                        }
                    },
                    VendorPref = request.Airlines.Select(air => new Vendorpref
                    {
                        Code        = air.ToUpper(),
                        PreferLevel = "Preferred"
                    }).ToArray()
                                 //VendorPref = new Vendorpref[]
                                 //{
                                 //        new Vendorpref
                                 //        {
                                 //            Code = "AF",
                                 //            PreferLevel = "Preferred"
                                 //        }
                                 //}
                },
                TPA_Extensions = new TravelConnect.Models.Requests.TPA_Extensions2
                {
                    IntelliSellTransaction = new Intelliselltransaction
                    {
                        RequestType = new Requesttype
                        {
                            Name = "200ITINS"
                        }
                    }
                }
            };

            return(rq);
        }