public AirCreateReservationRsp AirBookingReservationRequest(OFly.AirService.AirPricingSolution airPricingSolution, OFly.AirService.AirItinerary airItinerary, string CommissionOrDiscount, string Amount, List<OFly.Models.BookingTravellerInfos> TravellerList, OFly.Models.FormOfPaymentInfo formOfPaymentInfo)
        {
            AirCreateReservationReq request = new AirCreateReservationReq();
            AirCreateReservationRsp airCreateReservationRsp = new AirCreateReservationRsp();

            try
            {

                OFly.AirService.AirPricingSolution aps = airPricingSolution;
                List<OFly.AirService.typeBaseAirSegment> segmentList = airItinerary.AirSegment.ToList();
                List<OFly.AirService.AirPricingInfo> pricingInfo = aps.AirPricingInfo.ToList();
                List<ActionStatus> actionStatus = new List<ActionStatus>();
                List<BookingTraveler> bookingTraveler = new List<BookingTraveler>();

                request.AuthorizedBy = "user";
                request.ProviderCode = segmentList[0].ProviderCode;
                request.RetainReservation = typeRetainReservation.Both;
                request.TargetBranch = OFly.Utilities.CommonUtility.GetConfigValue(OFly.Utilities.ProjectConstants.G_TARGET_BRANCH);

                BillingPointOfSaleInfo billSaleInfo = new BillingPointOfSaleInfo();
                billSaleInfo.OriginApplication = ConfigurationManager.AppSettings["OriginApplication"];
                request.BillingPointOfSaleInfo = billSaleInfo;

                AirPricingSolution apsu = new AirPricingSolution();

                //  converted SegmentList from AirService to UniversalRecordService
                string SegmentListXMLString = SegmentListConvertToXML(segmentList);
                List<typeBaseAirSegment> tbas = LoadFromXMLToSegmentList(SegmentListXMLString);


                //  converted PriceInfoList from AirService to UniversalRecordService
                string PricingInfoXMLString = PricingInfoListConvertToXML(pricingInfo);
                List<AirPricingInfo> api = LoadFromXMLToPricingInfo(PricingInfoXMLString);

                ////    need to add dynamic travelers as per textbox
                bookingTraveler = BookingTravelerList(TravellerList);
                request.BookingTraveler = bookingTraveler.ToArray();


                //apsu.AirItinerarySolutionRef
                apsu.AirPricingInfo = api.ToArray();
                //apsu.AirPricingResultMessage
                apsu.AirSegment = tbas.ToArray();
                apsu.AirSegmentRef = null;
                apsu.ApproximateBasePrice = aps.ApproximateBasePrice;
                apsu.ApproximateFees = aps.ApproximateFees;
                apsu.ApproximateTaxes = aps.ApproximateTaxes;
                apsu.ApproximateTotalPrice = aps.ApproximateTotalPrice;
                //apsu.AvailableSSR
                apsu.BasePrice = aps.BasePrice;
                apsu.CompleteItinerary = aps.CompleteItinerary;
                //apsu.Connection
                apsu.EquivalentBasePrice = aps.EquivalentBasePrice;
                apsu.FareNote = null;
                apsu.FareNoteRef = null;
                //apsu.FeeInfo
                apsu.Fees = aps.Fees;
                //apsu.HostToken
                //apsu.Itinerary
                apsu.ItinerarySpecified = aps.ItinerarySpecified;
                //apsu.Journey
                apsu.Key = aps.Key;
                //apsu.LegRef
                //apsu.MetaData
                //apsu.OptionalServices
                //apsu.PricingDetails
                apsu.QuoteDate = aps.QuoteDate;
                apsu.QuoteDateSpecified = aps.QuoteDateSpecified;
                apsu.Services = aps.Services;
                apsu.Taxes = aps.Taxes;
                //apsu.TaxInfo
                apsu.TotalPrice = aps.TotalPrice;


                request.AirPricingSolution = apsu;

                ////  Applying Commission/Discount if applicable.
                //if (CommissionOrDiscount != null && CommissionOrDiscount != "" && Amount != null && Amount != "")
                //{
                //    List<ManualFareAdjustment> fareAdjustmentList = new List<ManualFareAdjustment>();

                //    ManualFareAdjustment adjustment = new ManualFareAdjustment();

                //    if (CommissionOrDiscount == "Amount")
                //    {
                //        adjustment.AdjustmentType = typeAdjustmentType.Amount;
                //    }
                //    else
                //    {
                //        adjustment.AdjustmentType = typeAdjustmentType.Percentage;
                //    }

                //    adjustment.AppliedOn = typeAdjustmentTarget.Base;
                //    adjustment.Value = Convert.ToInt32(Amount);
                //    adjustment.PassengerRef = "1";
                //    fareAdjustmentList.Add(adjustment);

                //    api[0].AirPricingModifiers = new AirPricingModifiers()
                //    {
                //        ManualFareAdjustment = fareAdjustmentList.ToArray()
                //    };
                //}

                actionStatus.Add(new ActionStatus { Type = ActionStatusType.ACTIVE, TicketDate = "T*", ProviderCode = request.ProviderCode });
                request.ActionStatus = actionStatus.ToArray();

                request.FormOfPayment = AddFormOfPayment(formOfPaymentInfo);

                AirCreateReservationPortTypeClient client = new AirCreateReservationPortTypeClient("AirCreateReservationPort", OFly.Utilities.WsdlService.AIR_ENDPOINT);

                client.ClientCredentials.UserName.UserName = OFly.Utilities.Helper.RetrunUsername();
                client.ClientCredentials.UserName.Password = OFly.Utilities.Helper.ReturnPassword();


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

                SupportedVersions supportedVersions = new SupportedVersions();
                supportedVersions.airVersion = "air_v31_0";
                airCreateReservationRsp = client.service(supportedVersions, request);

                return airCreateReservationRsp;
            }
            catch (Exception se)
            {
                throw se;
            }
        }
        internal AirCreateReservationRsp AirBook(AirService.AirPricingSolution lowestPrice, AirService.AirItinerary airItinerary)
        {
            AirCreateReservationReq reservationReq = new AirCreateReservationReq();
            AirCreateReservationRsp reservationRsp;

            BillingPointOfSaleInfo billSaleInfo = new BillingPointOfSaleInfo();
            billSaleInfo.OriginApplication = "UAPI";

            reservationReq.BillingPointOfSaleInfo = billSaleInfo;

            reservationReq.ContinuityCheckOverride = new ContinuityCheckOverride()
            {
                Key = "1T",
                Value = "true"
            };

            reservationReq.BookingTraveler = AddBookingTraveler(airItinerary);

            reservationReq.FormOfPayment = AddFormOfPayment();

            reservationReq.AirPricingSolution = AddAirPriceSolution(lowestPrice, airItinerary);

            List<ActionStatus> statusList = new List<ActionStatus>();

            ActionStatus actionStatus = new ActionStatus()
            {
                ProviderCode = "1G",
                Type = ActionStatusType.TAW,
                TicketDate = reservationReq.AirPricingSolution.AirPricingInfo[0].LatestTicketingTime
            };

            statusList.Add(actionStatus);

            reservationReq.ActionStatus = statusList.ToArray();



            reservationReq.TargetBranch = CommonUtility.GetConfigValue(ProjectConstants.G_TARGET_BRANCH);
            reservationReq.RetainReservation = typeRetainReservation.Both;

            AirCreateReservationPortTypeClient client = new AirCreateReservationPortTypeClient("AirCreateReservationPort", 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));

                /*SupportedVersions versions = new SupportedVersions();

                versions.airVersion = "air_v29_0";
                versions.urVersion = "universal_v29_0";*/                

                reservationRsp = client.service(null, reservationReq);
                //Console.WriteLine(lowFareSearchRsp.AirSegmentList.Count());

                return reservationRsp;
            }
            catch (Exception se)
            {
                Console.WriteLine("Error : " + se.Message);
                client.Abort();
                return null;
            }

        }