//--------------------------------------------------------------------------------------------------------------------- public BookingManager.PriceItineraryRequest GetPriceIntineraryRequest(int numadt, int numchd, String faretype, String currency, String sourceorg, String agentcode, GetAvailabilityResponse availresponse) { PriceItineraryRequest priceitinrequest = new PriceItineraryRequest(); priceitinrequest.Signature = signature; priceitinrequest.ItineraryPriceRequest = new ItineraryPriceRequest();// this is from service contract class priceitinrequest.ItineraryPriceRequest.TypeOfSale = new TypeOfSale(); priceitinrequest.ItineraryPriceRequest.TypeOfSale.FareTypes = new string[1]; priceitinrequest.ItineraryPriceRequest.TypeOfSale.FareTypes[0] = faretype; priceitinrequest.ItineraryPriceRequest.SSRRequest = new SSRRequest(); priceitinrequest.ItineraryPriceRequest.PriceItineraryBy = PriceItineraryBy.JourneyWithLegs; SellJourneyByKeyRequestData sellkeyrequest = new SellJourneyByKeyRequestData(); priceitinrequest.ItineraryPriceRequest.SellByKeyRequest = sellkeyrequest; PriceJourneyRequestData pricerequest = new PriceJourneyRequestData(); pricerequest.CurrencyCode = currency; pricerequest.PaxCount = (short)(numadt + numchd);// to check if this is required //setting up the paxdetails to get the pricing correctly, must follow my get avaialbility function call pricerequest.Passengers = new Passenger[numadt + numchd]; for (int i = 0; i < (numadt + numchd); i++) { pricerequest.Passengers[i] = new Passenger();// instantiate to avoid Null Pointer Exception error pricerequest.Passengers[i].State = MessageState.New; pricerequest.Passengers[i].PassengerTypeInfos = new PassengerTypeInfo[1];//change back to 1 if it does not work pricerequest.Passengers[i].PassengerTypeInfos[0] = new PassengerTypeInfo();//change back PassengerTypeInfos to 0 if it doesnt work if (i < numadt) { pricerequest.Passengers[i].PassengerTypeInfos[0].PaxType = "ADT"; } else { pricerequest.Passengers[i].PassengerTypeInfos[0].PaxType = "CHD"; } pricerequest.Passengers[i].PassengerTypeInfos[0].DOB = DateTime.Parse("0001-01-01"); } //new set input on 20nd March SellRequest sellrequest = new SellRequest(); sellrequest.Signature = signature; sellrequest.SellRequestData = new SellRequestData(); sellrequest.SellRequestData.SellBy = SellBy.Journey; sellrequest.SellRequestData.SellJourneyRequest = new SellJourneyRequest(); SellResponse sellresponse = clientapi.Sell(sellrequest); //end of input pricerequest.PriceJourneys = new PriceJourney[1];// set this to 1 for a 1 way trip for (int i = 0; i < pricerequest.PriceJourneys.Length; i++) { pricerequest.PriceJourneys[i] = new PriceJourney(); // now i need to get all the available segments for price itinerary Segment[] segment = availresponse.GetTripAvailabilityResponse.Schedules[i][0].Journeys[0].Segments; //i want to use the flight designator object for the segment as it contains the carriercode, flight number used to identify a flight Console.WriteLine("Flight Number is :" + segment[i].FlightDesignator.CarrierCode + " " + segment[i].FlightDesignator.FlightNumber); Console.WriteLine("FlightTiming is : " + segment[i].STD + " " + segment[i].STA); PriceSegment[] pricesegment = new PriceSegment[segment.Length];//find the pricing of that particular segment : for a 1 way journey with 2 points, it will be 1 segment SegmentSSRRequest[] ssrRequest = new SegmentSSRRequest[segment.Length]; for (int j = 0; j < segment.Length; j++) { //to setup the segment details and equate the values of price to segment pricesegment[j] = new PriceSegment(); pricesegment[j].ActionStatusCode = "NN"; pricesegment[j].FlightDesignator = segment[j].FlightDesignator; pricesegment[j].DepartureStation = segment[j].DepartureStation; pricesegment[j].ArrivalStation = segment[j].ArrivalStation; pricesegment[j].STA = pricesegment[j].STA; //SSR setup ssrRequest[j] = new SegmentSSRRequest(); ssrRequest[j].DepartureStation = segment[j].DepartureStation; ssrRequest[j].ArrivalStation = segment[j].ArrivalStation; ssrRequest[j].FlightDesignator = segment[j].FlightDesignator; ssrRequest[j].STD = segment[j].STD; //now assume that 1 SSR is tied to 1 passenger to 1 direct flight ssrRequest[j].PaxSSRs = new PaxSSR[1]; ssrRequest[j].PaxSSRs[0] = new PaxSSR(); ssrRequest[j].PaxSSRs[0].ActionStatusCode = "SS"; ssrRequest[j].PaxSSRs[0].DepartureStation = segment[j].DepartureStation; ssrRequest[j].PaxSSRs[0].ArrivalStation = segment[j].ArrivalStation; ssrRequest[j].PaxSSRs[0].SSRCode = "BG20";// type of SSR ssrRequest[j].PaxSSRs[0].SSRNumber = 0;//this is the index of the passenger array, tag the SSR to the first passenger //now set up the Fare according to the GetAvailability Response, no need to choose the option- same as Booking2 Fare fare = segment[j].Fares[0]; pricesegment[j].Fare = new SellFare(); pricesegment[j].Fare.CarrierCode = fare.CarrierCode; pricesegment[j].Fare.ClassOfService = fare.ClassOfService; pricesegment[j].Fare.FareApplicationType = fare.FareApplicationType; pricesegment[j].Fare.FareBasisCode = fare.FareBasisCode; pricesegment[j].Fare.ProductClass = fare.ProductClass; pricesegment[j].Fare.RuleNumber = fare.RuleNumber; } priceitinrequest.ItineraryPriceRequest.SSRRequest.SegmentSSRRequests = ssrRequest; priceitinrequest.ItineraryPriceRequest.PriceItineraryBy = PriceItineraryBy.JourneyWithLegs; priceitinrequest.ItineraryPriceRequest.PriceJourneyWithLegsRequest = pricerequest; } if (sourceorg.Length > 0) { pricerequest.SourcePOS = new PointOfSale(); pricerequest.SourcePOS.AgentCode = agentcode; pricerequest.SourcePOS.OrganizationCode = sourceorg; pricerequest.SourcePOS.DomainCode = "EXT"; pricerequest.SourcePOS.LocationCode = "API"; } else { pricerequest.SourcePOS = null; } //sell my SSR on 22nd March -new input if (priceitinrequest.ItineraryPriceRequest.SSRRequest.SegmentSSRRequests != null) { sellrequest.SellRequestData = new SellRequestData(); sellrequest.SellRequestData.SellSSR = new SellSSR(); sellrequest.SellRequestData.SellSSR.SSRRequest = priceitinrequest.ItineraryPriceRequest.SSRRequest; sellrequest.SellRequestData.SellBy = SellBy.SSR; sellresponse = clientapi.Sell(sellrequest); System.Console.WriteLine("Total Flight + SSR cost {0:C}", sellresponse.BookingUpdateResponseData.Success.PNRAmount.TotalCost); } //end of SSR code return priceitinrequest; }
public PriceItineraryRequest setPriceItineraryRequest(int numadt, int numchd, String faretype, String currency, GetAvailabilityResponse response, string sourceorg, string agentcode, int overnight) { PriceItineraryRequest priceitinrequest = new PriceItineraryRequest(); priceitinrequest.Signature = signature; ItineraryPriceRequest itinerarypricerequest = new ItineraryPriceRequest(); priceitinrequest.ItineraryPriceRequest = itinerarypricerequest; itinerarypricerequest.PriceItineraryBy = PriceItineraryBy.JourneyBySellKey;//get price itinerary by using JourneyWithSellKey TypeOfSale typeofsale = new TypeOfSale(); itinerarypricerequest.TypeOfSale = typeofsale; typeofsale.FareTypes = new string[1];// refers to RE or ST or JP wholesaler fares;-faretypes are governed by type of sale typeofsale.FareTypes[0] = faretype;// pass this back to the faretype parameter PriceJourneyRequestData pricerequest = new PriceJourneyRequestData(); SellJourneyByKeyRequestData sellkeyrequest = new SellJourneyByKeyRequestData(); itinerarypricerequest.SellByKeyRequest = sellkeyrequest; pricerequest.CurrencyCode = currency; pricerequest.PriceJourneys = new PriceJourney[1]; pricerequest.PriceJourneys[0] = new PriceJourney(); pricerequest.PaxCount = (short)(numadt + numchd); return null; }