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;
 }
        internal static OTA_AirBookRQRequest CreateAirBookRequest(SupplierInfo supplierInfo, AirItinerary airItinerary, List<Passenger> passengers, List<Charge> charges, Account account)
        {
            OTA_AirBookRQRequest request = new OTA_AirBookRQRequest();
            request.IsOnlyMockBooking = supplierInfo.IsOnlyMockBooking;
            request.IsMockEnabled = supplierInfo.IsMockEnabled;
            request.MessageHeader = CreateMessageHeader(supplierInfo, "OTA_AirBookRQ", "Create PNR");
            request.Security = CreateSecurityHeader(supplierInfo, airItinerary[Constants.SecurityToken]);
            request.OTA_AirBookRQ = new OTA_AirBookRQ();
            request.OTA_AirBookRQ.Version = 1.0m;
            request.OTA_AirBookRQ.TransactionStatusCode = TransactionStatusCode.End;
            request.OTA_AirBookRQ.TransactionStatusCodeSpecified = true;

            List<AirTravelerType> travellers = new List<AirTravelerType>();
            int infantsCnt = passengers.GetInfantCount();
            foreach (Passenger passenger in passengers)
            {
                AirTravelerType traveller = GetTravellerDetails(passenger, account, (travellers.Count).ToString());
                travellers.Add(traveller);
            }
            List<AirTravelerType> adultTravellers = travellers.FindAll(tv => string.Equals(tv.PassengerTypeCode, "ADT"));
            for (int i = 0; i < adultTravellers.Count;i++)
            {
                if (i == 0)
                {
                    adultTravellers[i].Telephone = new AirTravelerTypeTelephone[]
                                                       {
                                                           new AirTravelerTypeTelephone()
                                                               {
                                                                   RPH = "1",
                                                                   PhoneLocationType = "M",
                                                                   PhoneNumber = account.Mobile,
                                                                   Operation = ActionType.Add,
                                                                   OperationSpecified = true
                                                               }
                                                       };
                    adultTravellers[i].Email = new Email[]
                                                   {
                                                       new Email()
                                                           {
                                                               RPH = "1",
                                                               Value = account.Email,
                                                               Operation = ActionType.Add,
                                                               OperationSpecified = true
                                                           }
                                                   };
                }
                if ((i + 1) <= infantsCnt)
                    adultTravellers[i].AccompaniedByInfant = true;
            }
            if(string.Equals(supplierInfo.Mode,"Test"))
            {
                adultTravellers[0].PersonName.GivenName[0] = "ECOMM";
                adultTravellers[0].PersonName.Surname = "ECOMMERCE";
            }
            request.OTA_AirBookRQ.TravelerInfo = new TravelerInfoType();
            request.OTA_AirBookRQ.TravelerInfo.AirTraveler = travellers.ToArray();
            request.OTA_AirBookRQ.TravelerInfo.SpecialReqDetails = new SpecialReqDetailsType[1];
            request.OTA_AirBookRQ.TravelerInfo.SpecialReqDetails[0] = new SpecialReqDetailsType();
            return request;
        }
Beispiel #3
0
        public string Book(AirItinerary airItinerary, List<Passenger> passengers, List<Charge> charges, Account account, out List<string> ticketNumbers)
        {
            using (new ApplicationContextScope(new ApplicationContext()))
            {
                ApplicationContext.Current.Items["SessionId"] = _supplierInfo["SessionId"];
                string pnr = string.Empty;
                ticketNumbers = new List<string>();
                try
                {
                    //1. Get the securityToken
                    airItinerary[Constants.SecurityToken] = CreateJetSession();

                    //2. Sell the flight segment
                    SellFlightSegments(airItinerary);

                    //3. Add passenger information
                    JetConnector connector = new JetConnector(_supplierInfo.GetAirBookService());
                    JetModel.OTA_AirBookRQRequest bookRequest =
                        RequestTranslators.CreateAirBookRequest(_supplierInfo, airItinerary, passengers, charges,
                                                                account);
                    JetModel.OTA_AirBookRQResponse bookResponse =
                        connector.DoTransaction<JetModel.OTA_AirBookRQRequest, JetModel.OTA_AirBookRQResponse>(
                            bookRequest);
                    pnr = ResponseTranslators.GetPnrFromBookResponse(bookResponse, airItinerary);

                    //4.Get Ticket Number
                    try
                    {
                        connector._url = _supplierInfo.GetTicketService();
                        JetModel.AirTicketRQRequest ticketRequest =
                            RequestTranslators.CreateAitTicketRequest(_supplierInfo, airItinerary, pnr);
                        JetModel.AirTicketRQResponse ticketResponse =
                            connector.DoTransaction<JetModel.AirTicketRQRequest, JetModel.AirTicketRQResponse>(
                                ticketRequest);
                        ticketNumbers = ResponseTranslators.GetTicketNumbers(ticketResponse, airItinerary);
                    }
                    catch (Exception ex)
                    {
                        Logger.LogException(ex, Source, "Ticket", Severity.Major);
                    }
                }
                catch (Exception ex)
                {
                    Logger.LogException(ex, Source, "Book", Severity.Major);
                }
                finally
                {
                    Task.Factory.StartNew(() => CloseJetSession(airItinerary[Constants.SecurityToken], _supplierInfo["SessionId"]));
                }
                return pnr;
            }
        }
 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;
 }
 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;
 }
Beispiel #6
0
        public bool Book(string requestId, AirItinerary airItinerary, List<Passenger> passengers, List<Charge> charges, Account account,
                         out string errorMessage,
                         out Booking booking)
        {
            errorMessage = string.Empty;
            var mode = ConfigSettings.SupplierMode;
            booking = null;
            try
            {

                var supplierInfo =
                    SupplierDataProviderFactory.GetSupplierDataProvider().GetSupplier(airItinerary.Provider, mode);

                var supplier = GetSupplier(supplierInfo);

                if (supplier != null)
                {
                    List<string> ticketNumbers;
                    string pnr = supplier.Book(airItinerary, passengers, charges, account, out ticketNumbers);

                    if (!string.IsNullOrEmpty(pnr))
                    {
                        var bookingDataProvider = BookingDataProviderFactory.CreateBookingDataProvider();

                        booking = CreateBooking(airItinerary, passengers, charges, pnr, requestId, account.AccountId,
                                                ticketNumbers);
                        booking.TicketNumbers = ticketNumbers;
                        return bookingDataProvider.CreateBooking(booking);
                    }
                }
            }
            catch (Exception exception)
            {
                errorMessage = exception.Message;
                Logger.LogException(exception, "FlightProvider", "Price", Severity.Major);
            }
            return false;
        }
Beispiel #7
0
        public bool Price(AirItinerary airItinerary, List<Charge> charges, out string errorMessage,
                          out decimal chargeAmount)
        {
            errorMessage = string.Empty;
            chargeAmount = 0m;

            var mode = ConfigSettings.SupplierMode;

            try
            {
                var supplierInfo = SupplierDataProviderFactory.GetSupplierDataProvider().GetSupplier(airItinerary.Provider, mode);

                var supplier = GetSupplier(supplierInfo);

                if (supplier != null)
                {
                    decimal oldTotalfare = airItinerary.AirFare.TotalFare;
                    AirItinerary pricedItinerary = supplier.Price(airItinerary);
                    ApplyFeesAndMarkup(pricedItinerary);
                    if (!supplierInfo.IsMockEnabled)
                    {
                        if ((pricedItinerary.AirFare.TotalFare - oldTotalfare) > 1)
                        {
                            throw new Exception(string.Format("Pricing failed because of the price change(Old:{0} New:{1})! Please search again.", oldTotalfare, pricedItinerary.AirFare.TotalFare));
                        }
                    }
                    decimal chargesPaid = 0m;
                    if (charges != null)
                        charges.ForEach(x => chargesPaid += x.Amount);
                    chargeAmount = airItinerary.AirFare.TotalFare - chargesPaid;
                }
                return true;
            }
            catch (Exception exception)
            {
                errorMessage = exception.Message;
                Logger.LogException(exception, "FlightProvider", "Price", Severity.Major);
            }
            return false;
        }
 public bool Price(AirItinerary airItinerary, List<Charge> charges, out string errorMessage,
                   out decimal chargeAmount)
 {
     errorMessage = null;
     chargeAmount = airItinerary.AirFare.TotalFare;
     return true;
 }
        public AirItinerary GetRandomItinerary(string fromAirport, string toAirport, DateTime dateTime)
        {
            var itinerary = new AirItinerary
                                {
                                    AirFare = new AirFare
                                                  {

                                                  },
                                    Flights = new List<Flight>(),
                                };

            int flightNum = Rand.Next(1, 4);

            for (int number = 0; number < flightNum; number++)
            {
                int layoverMinutes = Rand.Next(60, 240);
                itinerary.Flights.Add(
                    GetRandomFlight(
                        number == 0 ? fromAirport : itinerary.Flights[itinerary.Flights.Count - 1].ToAirportCode,
                        flightNum > number + 1
                            ? _airportCityDictionary.ElementAt(Rand.Next(_airportCityDictionary.Count)).Key
                            : toAirport,
                        number == 0
                            ? dateTime
                            : itinerary.Flights[itinerary.Flights.Count - 1].ArrivalDateTime.AddMinutes(layoverMinutes),
                        0));

            }
            itinerary.Provider = itinerary.Flights[0].AirlineName;
            decimal baseFare = decimal.Round(new decimal(Rand.Next(1000, 3000)), 2);
            var passengerFare = new PassengerFare
                                    {
                                        BaseFare = baseFare,
                                        Markups = new List<FareComponent>
                                                      {
                                                          new FareComponent
                                                              {
                                                                  Amount = baseFare*15/100,
                                                                  Name = "Markup",
                                                                  Type = "Markup"
                                                              }
                                                      },
                                        Fees = new List<FareComponent>
                                                   {
                                                       new FareComponent
                                                           {Amount = 250, Name = "Service Fee", Type = "Fee"}
                                                   },
                                        Taxes = new List<FareComponent>
                                                    {
                                                        new FareComponent
                                                            {
                                                                Amount = decimal.Round(baseFare*125/1000),
                                                                Name = "Tax",
                                                                Type = "Tax"
                                                            }
                                                    }
                                    };

            itinerary.AirFare.PassengerFares = new List<PassengerFare>
                                                   {
                                                       passengerFare
                                                   };
            return itinerary;
        }
        public bool Book(string requestId, AirItinerary airItinerary, List<Passenger> passengers, List<Charge> charges, Account account, out string errorMessage,
                         out Booking booking)
        {
            errorMessage = null;

            booking = null;
            return true;
        }
        internal static AirPriceRsp AirPrice(List<typeBaseAirSegment> pricingSegments)
        {
            AirPriceReq priceReq = new AirPriceReq();
            AirPriceRsp priceRsp;

            AddPointOfSale(priceReq, "UAPI");

            AirItinerary itinerary = new AirItinerary();

            List<typeBaseAirSegment> itinerarySegments = new List<typeBaseAirSegment>();

            IEnumerator airSegments = pricingSegments.GetEnumerator();
            while (airSegments.MoveNext())
            {
                typeBaseAirSegment seg = (typeBaseAirSegment)airSegments.Current;
                seg.ProviderCode = "1G";
                seg.FlightDetailsRef = null;

                itinerarySegments.Add(seg);
            }

            itinerary.AirSegment = itinerarySegments.ToArray();

            priceReq.AirItinerary = itinerary;

            priceReq.SearchPassenger = AddSearchPassenger();

            priceReq.AirPricingModifiers = new AirPricingModifiers()
            {
                PlatingCarrier = priceReq.AirItinerary.AirSegment[0].Carrier
            };

            List<AirPricingCommand> pricingCommands = new List<AirPricingCommand>();

            AirPricingCommand command = new AirPricingCommand()
            {
                CabinClass = "Economy"//You can use Economy,PremiumEconomy,Business etc.
            };

            pricingCommands.Add(command);

            priceReq.AirPricingCommand = pricingCommands.ToArray();
            

            priceReq.TargetBranch = CommonUtility.GetConfigValue(ProjectConstants.G_TARGET_BRANCH);

            AirPricePortTypeClient client = new AirPricePortTypeClient("AirPricePort", WsdlService.AIR_ENDPOINT);

            client.ClientCredentials.UserName.UserName = Helper.RetrunUsername();
            client.ClientCredentials.UserName.Password = Helper.ReturnPassword();
            try
            {
                var httpHeaders = Helper.ReturnHttpHeader();
                client.Endpoint.EndpointBehaviors.Add(new HttpHeadersEndpointBehavior(httpHeaders));

                priceRsp = client.service(priceReq);                

                return priceRsp;
            }
            catch (Exception se)
            {
                Console.WriteLine("Error : " + se.Message);
                client.Abort();
                return null;
            }
        }
 private static List<AirItinerary> ParseFlightFares(Dictionary<int, FlightFares> jetFlightFares, FlightSearchParams searchParams,
     SupplierInfo supplierInfo)
 {
     List<AirItinerary> airItineraries = new List<AirItinerary>();
     foreach (int flightKey in jetFlightFares.Keys)
     {
         foreach (int fareKey in jetFlightFares[flightKey].MatrixRowOptions.Keys)
         {
             try
             {
                 JetModel.FlightMatrixOption fareOption = jetFlightFares[flightKey].MatrixRowOptions[fareKey];
                 if (fareOption != null)
                 {
                     AirFare airFare = ParsePassengerFareBreadowns(fareOption.PTC_FareBreakdown, searchParams.Adults, searchParams.Children, searchParams.Infants, false);
                     if (airFare != null)
                     {
                         List<Flight> flights = ParseFlightMatrixRow(jetFlightFares[flightKey].MatrixRow);
                         if (flights == null || flights.Count == 0) continue;
                         //Assign CabinClass, FareBasisCodesm and ClassOfService to each flight segment.
                         string[] cabinClasses = airFare.PassengerFares[0].CabinClass.Split(',');
                         string[] fareBasisCodes = airFare.PassengerFares[0].FareBasisCode.Split(',');
                         string[] classOfServices = airFare.PassengerFares[0].ClassOfService.Split(',');
                         for (int i = 0; i < flights.Count; i++)
                         {
                             int index = i >= cabinClasses.Length ? cabinClasses.Length - 1 : i;
                             flights[i].CabinClass = cabinClasses[index];
                             index = i >= classOfServices.Length ? classOfServices.Length - 1 : i;
                             flights[i].ClassOfService = classOfServices[index];
                             index = i >= fareBasisCodes.Length ? fareBasisCodes.Length - 1 : i;
                             flights[i].FareBasisCode = fareBasisCodes[index];
                         }
                         AirItinerary itinerary = new AirItinerary();
                         itinerary.JourneyType = "OneWay";
                         itinerary.AirFare = airFare;
                         itinerary.Flights = flights;
                         itinerary.Index = airItineraries.Count;
                         itinerary.Provider = supplierInfo.Provider;
                         itinerary.Mode = supplierInfo.Mode;
                         airItineraries.Add(itinerary);
                     }
                 }
             }
             catch (Exception ex)
             {
                 Logger.LogException(ex, Source, "ParseFlightFares", Severity.Major);
             }
         }
     }
     return airItineraries;
 }
 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;
 }
Beispiel #14
0
        public AirItinerary Price(AirItinerary airItinerary)
        {
            using (new ApplicationContextScope(new ApplicationContext()))
            {
                ApplicationContext.Current.Items["SessionId"] = _supplierInfo["SessionId"];
                try
                {
                    //1. Get the securityToken
                    airItinerary[Constants.SecurityToken] = CreateJetSession();

                    //2. Sell the flight segment
                    SellFlightSegments(airItinerary);
                }
                catch (Exception ex)
                {
                    Logger.LogException(ex, Source, "Book", Severity.Major);
                }
                finally
                {
                    Task.Factory.StartNew(() => IgnoreTransation(airItinerary[Constants.SecurityToken], _supplierInfo["SessionId"]));
                }
                return airItinerary;
            }
        }
Beispiel #15
0
        private static Booking CreateBooking(AirItinerary airItinerary, List<Passenger> passengers, List<Charge> charges, string pnr,
            string requestId, string accountId, List<string> ticketNumbers)
        {
            return new Booking
                       {
                           AddedOn = DateTime.Now,
                           AccountId = accountId,
                           BookingStatus = "Booked",
                           BookingType = "Air",
                           Charges = charges,
                           FlightBookings = new List<AirPnr>
                                                {
                                                    new AirPnr
                                                        {
                                                            AirFare = airItinerary.AirFare,
                                                            BookingStatus = "Booked",
                                                            Flights = airItinerary.Flights,
                                                            JourneyType = airItinerary.JourneyType,
                                                            Mode = airItinerary.Mode,
                                                            Passengers = passengers,
                                                            Pnr = pnr,
                                                            Provider = airItinerary.Provider,
                                                            RequestId = requestId,
                                                            TicketNumbers = string.Join(",", ticketNumbers.ToArray()),
                                                        }

                                                },
                           PassengerCount = passengers.Count,
                           TravelDate = airItinerary.Flights[0].DepartureDateTime,
                           TravelEndDate = airItinerary.Flights[airItinerary.Flights.Count - 1].ArrivalDateTime
                       };
        }
Beispiel #16
0
 private void ApplyFeesAndMarkup(AirItinerary airItinerary)
 {
     airItinerary.AirFare.PassengerFares.ForEach(y => y.Fees.
                                               AddRange(new List<FareComponent>
                                                            {
                                                                new FareComponent
                                                                    {
                                                                        Amount = 250,
                                                                        Name =
                                                                            "udChalo Service Charge",
                                                                        Type = "Fee"
                                                                    },
                                                                new FareComponent
                                                                    {
                                                                        Amount =
                                                                            Math.
                                                                            Round(
                                                                                (airItinerary.
                                                                                     AirFare
                                                                                     .
                                                                                     TotalFare +
                                                                                 250)*
                                                                                0.02m,
                                                                                0,
                                                                                MidpointRounding
                                                                                    .
                                                                                    AwayFromZero),
                                                                        Name =
                                                                            "Merchant Fee",
                                                                        Type = "Fee"
                                                                    }
                                                            }));
 }
        internal static AirSellRQRequest CreateAirSellRequest(SupplierInfo supplierInfo, AirItinerary airItinerary, string status = "NN")
        {
            AirSellRQRequest request = new AirSellRQRequest();
            request.IsOnlyMockBooking = supplierInfo.IsOnlyMockBooking;
            request.IsMockEnabled = supplierInfo.IsMockEnabled;
            int adultCount =0, infantCount=0, childCount=0;
            foreach (PassengerFare paxFare in airItinerary.AirFare.PassengerFares)
            {
                if (paxFare.PassengerType == PassengerType.Adult)
                    adultCount = adultCount + paxFare.Quantity;
                if (paxFare.PassengerType == PassengerType.Child)
                    childCount = childCount + paxFare.Quantity;
                if (paxFare.PassengerType == PassengerType.Infant)
                    infantCount = infantCount + paxFare.Quantity;
            }
            request.MessageHeader = CreateMessageHeader(supplierInfo, "OTA_AirSellService", "AirSellRQ");
            request.Security = CreateSecurityHeader(supplierInfo, airItinerary[Constants.SecurityToken]);
            request.OTA_AirPriceRQ = new OTA_AirPriceRQ();
            request.OTA_AirPriceRQ.AirItinerary = new AirItineraryType();
            request.OTA_AirPriceRQ.AirItinerary.DirectionInd = AirTripType.OneWay;
            request.OTA_AirPriceRQ.AirItinerary.DirectionIndSpecified = true;
            List<BookFlightSegmentType> segments = new List<BookFlightSegmentType>();
            foreach (Flight flight in airItinerary.Flights)
            {
                BookFlightSegmentType segment = new BookFlightSegmentType()
                                                    {
                                                        RPH = flight.Index.ToString(),
                                                        ArrivalAirport =
                                                            new ArrivalAirport() { LocationCode = flight.ToAirportCode },
                                                        ArrivalDateTime = flight.ArrivalDateTime,
                                                        DepartureAirport =
                                                            new DepartureAirport()
                                                                {LocationCode = flight.FromAirportCode},
                                                        DepartureDateTime = flight.DepartureDateTime,
                                                        FlightNumber = flight.FlightNumber,
                                                        ResBookDesigCode = flight.ClassOfService,
                                                        NumberInParty =  (adultCount + childCount + infantCount).ToString(),
                                                        Status = status,
                                                        OperatingAirline =
                                                            new OperatingAirlineType() { Code = flight.AirlineCode },
                                                        MarketingAirline =
                                                            new MarketingAirline() { Code = flight.MarketingAirlineCode },
                                                    };
                segments.Add(segment);
            }
            request.OTA_AirPriceRQ.AirItinerary.OriginDestinationOptions = new BookFlightSegmentType[1][];
            request.OTA_AirPriceRQ.AirItinerary.OriginDestinationOptions[0] = segments.ToArray();

            List<TravelerInformationType> travellers = GetTravellersInfo(adultCount , childCount, infantCount);
            request.OTA_AirPriceRQ.TravelerInfoSummary = new TravelerInfoSummaryType();
            request.OTA_AirPriceRQ.TravelerInfoSummary.AirTravelerAvail = travellers.ToArray();
            return request;
        }
 public void PriceTest()
 {
     var target = new MockFlightProvider();
     var airItinerary = new AirItinerary
                            {
                                AirFare = new AirFare
                                              {
                                                  PassengerFares = new List<PassengerFare>
                                                                       {
                                                                           new PassengerFare
                                                                               {BaseFare = 120, Quantity = 1}
                                                                       }
                                              }
                            };
     List<Charge> charges = null;
     string errorMessage = string.Empty;
     string errorMessageExpected = string.Empty;
     var chargeAmount = new Decimal();
     Decimal chargeAmountExpected = 120;
     bool expected = true;
     bool actual;
     actual = target.Price(airItinerary, charges, out errorMessage, out chargeAmount);
     Assert.AreEqual(chargeAmountExpected, chargeAmount);
     Assert.AreEqual(expected, actual);
 }
 internal static AirTicketRQRequest CreateAitTicketRequest(SupplierInfo supplierInfo, AirItinerary airItinerary, string pnr)
 {
     AirTicketRQRequest request = new AirTicketRQRequest();
     request.IsOnlyMockBooking = supplierInfo.IsOnlyMockBooking;
     request.IsMockEnabled = supplierInfo.IsMockEnabled;
     request.MessageHeader = CreateMessageHeader(supplierInfo, "AirTicketRQ", "Ticket PNR");
     request.Security = CreateSecurityHeader(supplierInfo, airItinerary[Constants.SecurityToken]);
     request.OTA_AirBookRQ = new OTA_AirBookRQ()
                                 {
                                     Ticketing = new TicketingInfoType() {TicketType = TicketType.eTicket},
                                     BookingReferenceID = new UniqueID_Type() {ID = pnr},
                                 };
     request.OTA_AirBookRQ.TransactionStatusCodeSpecified = true;
     request.OTA_AirBookRQ.TransactionStatusCode = TransactionStatusCode.End;
     return request;
 }
Beispiel #20
0
        internal static AirPriceRsp AirPrice(List <typeBaseAirSegment> pricingSegments)
        {
            AirPriceReq priceReq = new AirPriceReq();
            AirPriceRsp priceRsp;

            AddPointOfSale(priceReq, "UAPI");

            AirItinerary itinerary = new AirItinerary();

            List <typeBaseAirSegment> itinerarySegments = new List <typeBaseAirSegment>();

            IEnumerator airSegments = pricingSegments.GetEnumerator();

            while (airSegments.MoveNext())
            {
                typeBaseAirSegment seg = (typeBaseAirSegment)airSegments.Current;
                seg.ProviderCode     = "1G";
                seg.FlightDetailsRef = null;
                seg.ClassOfService   = "Y";

                itinerarySegments.Add(seg);
            }

            itinerary.AirSegment = itinerarySegments.ToArray();

            priceReq.AirItinerary = itinerary;

            priceReq.SearchPassenger = AddSearchPassenger();

            priceReq.AirPricingModifiers = new AirPricingModifiers()
            {
                PlatingCarrier = priceReq.AirItinerary.AirSegment[0].Carrier
            };

            List <AirPricingCommand> pricingCommands = new List <AirPricingCommand>();

            AirPricingCommand command = new AirPricingCommand()
            {
                CabinClass = "Economy"//You can use Economy,PremiumEconomy,Business etc.
            };

            pricingCommands.Add(command);

            priceReq.AirPricingCommand = pricingCommands.ToArray();


            priceReq.TargetBranch = CommonUtility.GetConfigValue(ProjectConstants.G_TARGET_BRANCH);

            AirPricePortTypeClient client = new AirPricePortTypeClient("AirPricePort", WsdlService.AIR_ENDPOINT);

            client.ClientCredentials.UserName.UserName = Helper.RetrunUsername();
            client.ClientCredentials.UserName.Password = Helper.ReturnPassword();
            try
            {
                var httpHeaders = Helper.ReturnHttpHeader();
                client.Endpoint.EndpointBehaviors.Add(new HttpHeadersEndpointBehavior(httpHeaders));

                priceRsp = client.service(null, priceReq);

                return(priceRsp);
            }
            catch (Exception se)
            {
                Console.WriteLine("Error : " + se.Message);
                client.Abort();
                return(null);
            }
        }
Beispiel #21
0
 private void SellFlightSegments(AirItinerary airItinerary)
 {
     JetConnector connector = new JetConnector(_supplierInfo.GetAirSellService());
     JetModel.AirSellRQRequest sellRequest = RequestTranslators.CreateAirSellRequest(_supplierInfo, airItinerary);
     JetModel.AirSellRQResponse sellResponse =
         connector.DoTransaction<JetModel.AirSellRQRequest, JetModel.AirSellRQResponse>(sellRequest);
     ResponseTranslators.ParseSellFlightResponse(sellResponse, ref airItinerary);
 }