Esempio n. 1
0
 internal static void ParseSellFlightResponse(JetModel.AirSellRQResponse sellResponse, ref AirItinerary airItinerary)
 {
     SetSecurityToken(sellResponse.Security, airItinerary);
     if (sellResponse == null || sellResponse.OTA_AirPriceRS == null ||
         (sellResponse.OTA_AirPriceRS.Errors != null && sellResponse.OTA_AirPriceRS.Errors.Length > 0) ||
         sellResponse.OTA_AirPriceRS.PricedItineraries == null || sellResponse.OTA_AirPriceRS.PricedItineraries.Length == 0 ||
         sellResponse.OTA_AirPriceRS.PricedItineraries[0].AirItineraryPricingInfo == null ||
         sellResponse.OTA_AirPriceRS.PricedItineraries[0].AirItineraryPricingInfo.PTC_FareBreakdowns == null ||
         sellResponse.OTA_AirPriceRS.PricedItineraries[0].AirItineraryPricingInfo.PTC_FareBreakdowns.Length == 0)
     {
         throw new Exception("JET AirSell call failed while booking!!!");
     }
     int adultCount = 0, infantCount = 0, childCount = 0;
     foreach (PassengerFare paxFare in airItinerary.AirFare.PassengerFares)
     {
         if (paxFare.PassengerType == PassengerType.Adult)
             adultCount = paxFare.Quantity;
         if (paxFare.PassengerType == PassengerType.Child)
             childCount = paxFare.Quantity;
         if (paxFare.PassengerType == PassengerType.Infant)
             infantCount = paxFare.Quantity;
     }
     AirFare airFare =
         ParsePassengerFareBreadowns(
             sellResponse.OTA_AirPriceRS.PricedItineraries[0].AirItineraryPricingInfo.PTC_FareBreakdowns,
             adultCount, childCount, infantCount, true);
     for (int i = 0; i < airFare.PassengerFares.Count;i++)
     {
         airFare.PassengerFares[i].CabinClass = airItinerary.AirFare.PassengerFares[0].CabinClass;
         airFare.PassengerFares[i].FareBasisCode = airItinerary.AirFare.PassengerFares[0].FareBasisCode;
         airFare.PassengerFares[i].ClassOfService = airItinerary.AirFare.PassengerFares[0].ClassOfService;
     }
     airItinerary.AirFare = airFare;
 }
Esempio n. 2
0
 internal static string GetPnrFromBookResponse(JetModel.OTA_AirBookRQResponse bookResponse, AirItinerary airItinerary)
 {
     SetSecurityToken(bookResponse.Security, airItinerary);
     if (bookResponse == null || bookResponse.OTA_AirBookRS == null ||
            (bookResponse.OTA_AirBookRS.Errors != null && bookResponse.OTA_AirBookRS.Errors.Length > 0) ||
             bookResponse.OTA_AirBookRS.AirReservation == null || bookResponse.OTA_AirBookRS.AirReservation.Length == 0 ||
             bookResponse.OTA_AirBookRS.AirReservation[0].BookingReferenceID == null ||
             bookResponse.OTA_AirBookRS.AirReservation[0].BookingReferenceID.Length == 0 ||
             string.IsNullOrEmpty(bookResponse.OTA_AirBookRS.AirReservation[0].BookingReferenceID[0].ID))
     {
         throw new Exception("JET AirBook call failed while adding the passenger detials!!!");
     }
     return bookResponse.OTA_AirBookRS.AirReservation[0].BookingReferenceID[0].ID;
 }
Esempio n. 3
0
 internal static List<string> GetTicketNumbers(JetModel.AirTicketRQResponse ticketResponse, AirItinerary itinerary)
 {
     SetSecurityToken(ticketResponse.Security, itinerary);
     if (ticketResponse == null || ticketResponse.OTA_AirBookRS == null ||
            (ticketResponse.OTA_AirBookRS.Errors != null && ticketResponse.OTA_AirBookRS.Errors.Length > 0) ||
             ticketResponse.OTA_AirBookRS.AirReservation == null || ticketResponse.OTA_AirBookRS.AirReservation.Length == 0 ||
             ticketResponse.OTA_AirBookRS.AirReservation[0].Ticketing == null ||
             ticketResponse.OTA_AirBookRS.AirReservation[0].Ticketing.TicketAdvisory == null ||
             ticketResponse.OTA_AirBookRS.AirReservation[0].Ticketing.TicketAdvisory.Length == 0 ||
             string.IsNullOrEmpty(ticketResponse.OTA_AirBookRS.AirReservation[0].Ticketing.TicketAdvisory[0].Value))
     {
         throw new Exception("JET AirTicket call failed after booking!!!");
     }
     List<string> ticketNumbers = new List<string>();
     foreach (JetModel.FreeTextType ticketNumber in ticketResponse.OTA_AirBookRS.AirReservation[0].Ticketing.TicketAdvisory)
     {
         ticketNumbers.Add(ticketNumber.Value);
     }
     return ticketNumbers;
 }
Esempio n. 4
0
 internal static List<AirItinerary> ParseSearchResponse(SupplierInfo  supplierInfo, JetModel.FlightMatrixRequestResponse searchResponse, FlightSearchParams searchParams, ref string securityToken)
 {
     try
     {
         securityToken = SetSecurityToken(searchResponse.Security, null);
         if(searchResponse.FlightMatrixRS == null ||
             searchResponse.FlightMatrixRS.FlightMatrices == null || searchResponse.FlightMatrixRS.FlightMatrices.Length == 0 ||
             searchResponse.FlightMatrixRS.FlightMatrixOptions == null || searchResponse.FlightMatrixRS.FlightMatrixOptions.Length == 0)
         {
             throw new Exception("Invalid FlightMatrixRequestResponse from Jet!!!");
         }
         List<AirItinerary> airItineraries = new List<AirItinerary>();
         Dictionary<int, FlightFares> jetFlightFares = GetFlightFares(searchResponse);
         airItineraries = ParseFlightFares(jetFlightFares, searchParams, supplierInfo);
         airItineraries.ForEach(itin => itin[Constants.SecurityToken] = searchResponse.Security.BinarySecurityToken);
         return airItineraries;
     }
     catch (Exception ex)
     {
         Logger.LogException(ex, Source, "ParseSearchResponse", Severity.Major);
         return new List<AirItinerary>();
     }
 }
Esempio n. 5
0
        private static AirFare ParsePassengerFareBreadowns(JetModel.PTCFareBreakdownType[] fareBreakdown, int adultCount, int childCount, int infantCount, bool useQuantityFromResponse)
        {
            if (fareBreakdown == null || fareBreakdown.Length == 0)
                return null;
            AirFare airFare = new AirFare();
            airFare.PassengerFares = new List<PassengerFare>();
            foreach (JetModel.PTCFareBreakdownType paxFbt in fareBreakdown)
            {
                if (paxFbt.PassengerFare == null) return null;
                PassengerFare paxFare = new PassengerFare();
                paxFare.PassengerType = ParsePassengerCode(paxFbt.PassengerTypeQuantity.Code);
                if(useQuantityFromResponse)
                {
                    paxFare.Quantity = Int32.Parse(paxFbt.PassengerTypeQuantity.Quantity);
                }
                else
                {
                    if (paxFare.PassengerType == PassengerType.Adult)
                        paxFare.Quantity = adultCount;
                    else if (paxFare.PassengerType == PassengerType.Child)
                        paxFare.Quantity = childCount;
                    else if (paxFare.PassengerType == PassengerType.Infant)
                        paxFare.Quantity = infantCount;
                }

                paxFare.BaseFare = paxFbt.PassengerFare.BaseFare.Amount;
                paxFare.Currency = paxFbt.PassengerFare.BaseFare.CurrencyCode;
                paxFare.Taxes = new List<FareComponent>();
                if (paxFbt.PassengerFare.Taxes != null)
                {
                    foreach (JetModel.AirTaxType tax in paxFbt.PassengerFare.Taxes)
                    {
                        FareComponent taxComponant = new FareComponent()
                                                         {
                                                             Amount = tax.Amount,
                                                             Type = tax.TaxCode
                                                         };
                        paxFare.Taxes.Add(taxComponant);
                    }
                }
                if (paxFbt.FareBasisCodes != null)
                {
                    foreach (string code in paxFbt.FareBasisCodes)
                    {
                        paxFare.FareBasisCode = (!string.IsNullOrEmpty(paxFare.FareBasisCode) ? paxFare.FareBasisCode + "," : string.Empty) + code;
                    }
                }
                if (paxFbt.FareInfo != null)
                {
                    foreach (JetModel.FareReference info in paxFbt.FareInfo[0].FareReference)
                    {
                        paxFare.ClassOfService = (!string.IsNullOrEmpty(paxFare.ClassOfService) ? paxFare.ClassOfService + "," : string.Empty) +
                                         info.ResBookDesigCode;
                        paxFare.CabinClass = (!string.IsNullOrEmpty(paxFare.CabinClass) ? paxFare.CabinClass + "," : string.Empty) + info.Value;
                    }
                }
                airFare.PassengerFares.Add(paxFare);
            }
            return airFare;
        }
Esempio n. 6
0
 private static Flight ParseFlightSegment(JetModel.BookFlightSegmentType flightSegment)
 {
     if (flightSegment == null)
         return null;
     Flight flight = new Flight();
     flight.Index = Int32.Parse(flightSegment.RPH);
     if (flightSegment.OperatingAirline != null)
     {
         flight.AirlineCode = flightSegment.OperatingAirline.Code;
         flight.AirlineName = GetAirlineName(flightSegment.OperatingAirline.CompanyShortName);
         flight.FlightNumber = flightSegment.OperatingAirline.FlightNumber;
     }
     flight.ArrivalDateTime = flightSegment.ArrivalDateTime;
     flight.DepartureDateTime = flightSegment.DepartureDateTime;
     flight.FromAirportCode = flightSegment.DepartureAirport.LocationCode;
     flight.ToAirportCode = flightSegment.ArrivalAirport.LocationCode;
     flight.DurationInMinutes =
         Convert.ToInt32(((flight.ArrivalDateTime - flight.DepartureDateTime).TotalMinutes));
     flight.MarketingAirlineCode = flightSegment.MarketingAirline == null ? null : flightSegment.MarketingAirline.Code;
     flight.LegNumber = 0;
     flight.Stops = int.Parse(flightSegment.StopQuantity);
     flight.FlightAvails = ParseAvailability(flightSegment.BookingClassAvails);
     //flight.Aircraft
     //flight.LayoverAirportCode
     //flight.LayoverCity
     //flight.ToCity
     return flight;
 }
Esempio n. 7
0
 private static List<Flight> ParseFlightMatrixRow(JetModel.FlightMatrixRow flightMatrixRow)
 {
     if (flightMatrixRow.OriginDestinationOptionType == null || flightMatrixRow.OriginDestinationOptionType.Length == 0)
         return null;
     List<Flight> flights = new List<Flight>();
     foreach (JetModel.BookFlightSegmentType flightSegment in flightMatrixRow.OriginDestinationOptionType)
     {
         if (flightSegment == null) continue;
         Flight flight = new Flight();
         flight.Index = Int32.Parse(flightSegment.RPH);
         if (flightSegment.OperatingAirline != null)
         {
             flight.AirlineCode = flightSegment.OperatingAirline.Code;
             flight.AirlineName = GetAirlineName(flightSegment.OperatingAirline.CompanyShortName);
             flight.FlightNumber = flightSegment.OperatingAirline.FlightNumber;
         }
         flight.ArrivalDateTime = flightSegment.ArrivalDateTime;
         flight.DepartureDateTime = flightSegment.DepartureDateTime;
         flight.FromAirportCode = flightSegment.DepartureAirport.LocationCode;
         flight.ToAirportCode = flightSegment.ArrivalAirport.LocationCode;
         flight.DurationInMinutes =
             Convert.ToInt32(((flight.ArrivalDateTime - flight.DepartureDateTime).TotalMinutes));
         flight.MarketingAirlineCode = flightSegment.MarketingAirline == null ? null : flightSegment.MarketingAirline.Code;
         flight.LegNumber = 0;
         flight.Stops = int.Parse(flightSegment.StopQuantity);
         flight.FlightAvails = ParseAvailability(flightSegment.BookingClassAvails);
         //flight.Aircraft
         Flight previousFlight = flights.Find(x => string.Equals(x.ToAirportCode, flight.FromAirportCode));
         if(previousFlight != null)
         {
             flight.LayoverAirportCode = previousFlight.ToAirportCode;
             flight.LayoverMinutes =
                 Convert.ToInt32((flight.DepartureDateTime - previousFlight.ArrivalDateTime).TotalMinutes);
             //flight.LayoverCity
         }
         //flight.ToCity
         flights.Add(flight);
     }
     return flights;
 }
Esempio n. 8
0
 private static List<Availability> ParseAvailability(JetModel.BookingClassAvail[] bookingClassAvail)
 {
     if (bookingClassAvail == null || bookingClassAvail.Length == 0)
         return null;
     List<Availability> flightAvails = new List<Availability>();
     foreach (JetModel.BookingClassAvail classAvail in bookingClassAvail)
     {
         if (classAvail == null) continue;
         Availability availability = new Availability()
                                         {
                                             ClassOfService = classAvail.ResBookDesigCode,
                                             QuantityAvailable = int.Parse(classAvail.ResBookDesigQuantity),
                                         };
         flightAvails.Add(availability);
     }
     return flightAvails;
 }
Esempio n. 9
0
        private static Dictionary<int, FlightFares> GetFlightFares(JetModel.FlightMatrixRequestResponse searchResponse)
        {
            Dictionary<int, FlightFares> flightFares = new Dictionary<int, FlightFares>();
            foreach (JetModel.FlightMatrixRow flightMatrixRow in searchResponse.FlightMatrixRS.FlightMatrices[0].FlightMatrixRows)
            {
                try
                {
                    FlightFares flightFare = new FlightFares() { MatrixRow = flightMatrixRow };
                    flightFare.MatrixRowOptions = new Dictionary<int, JetModel.FlightMatrixOption>();
                    if (flightMatrixRow.FlightMatrixCells != null && flightMatrixRow.FlightMatrixCells.Length > 0)
                    {
                        foreach (JetModel.FlightMatrixCell flightMatrixCell in flightMatrixRow.FlightMatrixCells)
                        {
                            if (flightMatrixCell.Status == JetModel.FlightMatrixCellStatus.Priced)
                            {
                                flightFare.MatrixRowOptions[flightMatrixCell.FamilyRPH] = null;
                            }
                        }
                    }
                    else
                    {
                        continue;
                    }
                    if (flightFare.MatrixRowOptions.Count > 0)
                        flightFares[int.Parse(flightMatrixRow.RPH)] = flightFare;

                }
                catch (Exception ex)
                {
                    Logger.LogException(ex, Source, "GetFlightFares", Severity.Major);
                }
            }
            //Assign fares to flights.
            foreach (JetModel.FlightMatrixOption flightMatrixOption in searchResponse.FlightMatrixRS.FlightMatrixOptions)
            {
                foreach (JetModel.FlightMatrixIndex ffIndex in flightMatrixOption.FlightMatrixIndices)
                {
                    if (flightFares.ContainsKey(ffIndex.FlightOB))
                    {
                        if (flightFares[ffIndex.FlightOB].MatrixRowOptions.ContainsKey(ffIndex.FamilyOB))
                        {
                            flightFares[ffIndex.FlightOB].MatrixRowOptions[ffIndex.FamilyOB] = flightMatrixOption;
                        }
                    }
                }
            }
            return flightFares;
        }
Esempio n. 10
0
 internal static string SetSecurityToken(JetModel.Security securityInfo, AirItinerary itinerary)
 {
     if(securityInfo == null || string.IsNullOrEmpty(securityInfo.BinarySecurityToken))
         throw new Exception("Invalid security information received from JET.");
     if( itinerary != null )
         itinerary[Constants.SecurityToken] = securityInfo.BinarySecurityToken;
     return securityInfo.BinarySecurityToken;
 }