Example #1
0
        private async void AddTimezonesCallback(ISet <string> timezoneIds)
        {
            Logger.LogInformation($"Adding {timezoneIds.Count} new timezones.");
            _timezoneIdList.UnionWith(timezoneIds);

            // save tracked timezones to local storage
            await SSR.SaveTrackedTimezones(_timezoneIdList);
        }
Example #2
0
        private void ToSSRJson()
        {
            var sFile = getFilePath("2.html");

            CsQuery.CQ dom  = System.IO.File.ReadAllText(sFile);
            var        oSSR = new SSR();

            oSSR.configs = new List <FreeSSR.Server>();
            foreach (var row in dom["tr"])
            {
                CsQuery.CQ rowDom = row.InnerHTML;
                var        tds    = rowDom["td"].ToList();
                var        config = new FreeSSR.Server();
                if (tds.Count > 0)
                {
                    var vtm = tds[0].InnerText;
                    if (int.Parse(vtm.Split('/')[1]) > 8) //T是电信线路,值越大越好
                    {
                        config.server      = tds[1].InnerText;
                        config.server_port = int.Parse(tds[2].InnerText);
                        var p1 = tds[3].InnerText;
                        var p2 = tds[4].InnerText;
                        if (p1 == "rc4-md5" || p1 == "chacha20" || p1.StartsWith("aes-"))
                        {
                            config.method   = p1;
                            config.password = p2;
                        }
                        else
                        {
                            config.method   = p2;
                            config.password = p1;
                        }
                        config.id = Guid.NewGuid().ToString("N");
                    }
                }
                if (!string.IsNullOrWhiteSpace(config.server))
                {
                    oSSR.configs.Add(config);
                }
            }
            var json = Newtonsoft.Json.JsonConvert.SerializeObject(oSSR);

            System.IO.File.WriteAllText(getFilePath("ssr.json"), json);
            var sOutFile = $"{SSR_EXE_PATH}\\ssr.json";

            if (System.IO.File.Exists(sOutFile))
            {
                System.IO.File.Delete(sOutFile);
            }
            System.IO.File.Copy(getFilePath("ssr.json"), sOutFile);
            write_gui_config(sOutFile);
        }
Example #3
0
        private async Task PopulateTrackedTimezones()
        {
            ISet <string> tt = await SSR.GetTrackedTimezones();

            if (tt != null && !_timezoneIdList.SetEquals(tt))
            {
                _timezoneIdList.Clear();
                if (tt != null)
                {
                    _timezoneIdList.UnionWith(await SSR.GetTrackedTimezones());
                }
            }
            else if (tt == null)
            {
                _timezoneIdList.Clear();
            }
        }
Example #4
0
        private static SegmentSSRRequest CreateSegmentSSRRequest(SSR ssr, string departureStation, string arrivalStation, int[] paxNumbers,
                                                                 FlightDesignator flightDesignator, DateTime departureDateTime, int ssrCount, Dictionary <int, List <short> > ssrNumbersToCancelDict = null, string note = "")
        {
            var list = new List <PaxSSR>();

            foreach (var paxNumber in paxNumbers)
            {
                for (var i = 0; i < ssrCount; i++)
                {
                    var   isCancel  = ssrNumbersToCancelDict != null && ssrNumbersToCancelDict.ContainsKey(paxNumber);
                    short ssrNumber = isCancel ? ssrNumbersToCancelDict[paxNumber].LastOrDefault() : (short)i;
                    list.Add(new PaxSSR
                    {
                        ArrivalStation   = arrivalStation,
                        DepartureStation = departureStation,
                        FeeCode          = ssr.FeeCode,
                        PassengerNumber  = (short)paxNumber,
                        SSRCode          = ssr.SSRCode,
                        SSRDetail        = string.Empty,
                        Note             = note,
                        SSRNumber        = ssrNumber
                    });
                    if (isCancel)
                    {
                        ssrNumbersToCancelDict[paxNumber].Remove(ssrNumber);
                    }
                }
            }
            var segmentSSRRequest = new SegmentSSRRequest
            {
                ArrivalStation   = arrivalStation,
                DepartureStation = departureStation,
                FlightDesignator = flightDesignator,
                PaxSSRs          = list.ToArray(),
                STD = departureDateTime
            };

            return(segmentSSRRequest);
        }
Example #5
0
        public static List <SegmentSSRRequest> CreateSegmentSSRRequests(List <Journey> journeys, SSR ssr, int[] paxNumbers, int ssrCount,
                                                                        List <Tuple <int, List <Tuple <int, int[]> > > > journeySegmentLegIndexes, Dictionary <int, List <short> > ssrNumbersToCancelDict = null, string note = "")
        {
            var segmentSSRRequests = new List <SegmentSSRRequest>();

            foreach (var journeyTuple in journeySegmentLegIndexes)
            {
                var journeyIndex = journeyTuple.Item1;
                foreach (var segmentTuple in journeyTuple.Item2)
                {
                    var segmentIndex = segmentTuple.Item1;
                    if (segmentTuple.Item2 != null && segmentTuple.Item2.Length != 0) // SSR is sold per leg
                    {
                        foreach (var legIndex in segmentTuple.Item2)
                        {
                            var leg = journeys[journeyIndex].Segments[segmentIndex].Legs[legIndex];
                            var segmentSSRRequest = CreateSegmentSSRRequest(ssr, leg.DepartureStation,
                                                                            leg.ArrivalStation, paxNumbers, leg.FlightDesignator, leg.STD, ssrCount, ssrNumbersToCancelDict, note);
                            segmentSSRRequests.Add(segmentSSRRequest);
                        }
                    }
                    else // SSR is sold per segment
                    {
                        var segment           = journeys[journeyIndex].Segments[segmentIndex];
                        var segmentSSRRequest = CreateSegmentSSRRequest(ssr, segment.DepartureStation,
                                                                        segment.ArrivalStation, paxNumbers, segment.FlightDesignator, segment.STD, ssrCount, ssrNumbersToCancelDict, note);
                        segmentSSRRequests.Add(segmentSSRRequest);
                    }
                }
            }
            return(segmentSSRRequests);
        }
Example #6
0
        private BookingTraveler[] AddBookingTraveler(AirService.AirItinerary airItinerary)
        {
            List <BookingTraveler> travelers = new List <BookingTraveler>();

            //Adding First Booking Traveler
            BookingTraveler traveler = new BookingTraveler();

            traveler.DOB          = DateTime.Now.AddYears(-28);
            traveler.Gender       = "M";
            traveler.TravelerType = "ADT";
            traveler.Key          = "gr8AVWGCR064r57Jt0+8bA==";
            traveler.Nationality  = "US";

            traveler.BookingTravelerName = new BookingTravelerName()
            {
                First  = "Jack",
                Last   = "Smith",
                Prefix = "Mr"
            };

            DeliveryInfoShippingAddress shipping = new DeliveryInfoShippingAddress()
            {
                AddressName = "Home",
                Street      = new string[] { "2914 N. Dakota Avenue" },
                City        = "Denver",
                State       = new State()
                {
                    Value = "CO"
                },
                PostalCode = "80206",
                Country    = "US"
            };

            List <DeliveryInfo> deliveryInfoList = new List <DeliveryInfo>();
            DeliveryInfo        deliveryInfo     = new DeliveryInfo()
            {
                ShippingAddress = shipping
            };

            deliveryInfoList.Add(deliveryInfo);

            traveler.DeliveryInfo = deliveryInfoList.ToArray();

            List <PhoneNumber> phoneList = new List <PhoneNumber>();

            PhoneNumber phoneNum = new PhoneNumber()
            {
                AreaCode    = "303",
                CountryCode = "1",
                Number      = "3333333",
                Location    = "DEN"
            };

            phoneList.Add(phoneNum);

            traveler.PhoneNumber = phoneList.ToArray();

            List <Email> emailList = new List <Email>();

            Email email = new Email()
            {
                EmailID = "*****@*****.**",
                Type    = "Home"
            };

            emailList.Add(email);

            traveler.Email = emailList.ToArray();


            List <SSR> ssrList = new List <SSR>();

            //This part is optional but required for some airlines like UA etc.
            if (airItinerary.AirSegment != null)
            {
                IEnumerator segments = airItinerary.AirSegment.GetEnumerator();
                while (segments.MoveNext())
                {
                    AirService.typeBaseAirSegment seg = (AirService.typeBaseAirSegment)segments.Current;
                    SSR ssr = new SSR()
                    {
                        Carrier    = seg.Carrier,
                        SegmentRef = seg.Key,
                        Status     = "HK",
                        Type       = "DOCS",
                        FreeText   = "P/" + traveler.Nationality + "/F1234567/" + traveler.Nationality + "/"
                                     + traveler.DOB.ToString("ddMMMyy") + "/"
                                     + traveler.Gender + "/" + DateTime.Now.AddYears(2).ToString("ddMMMyy") + "/" + traveler.BookingTravelerName.Last
                                     + "/" + traveler.BookingTravelerName.First
                    };

                    ssrList.Add(ssr);
                }
            }

            traveler.SSR = ssrList.ToArray();

            List <typeStructuredAddress> addressList = new List <typeStructuredAddress>();

            typeStructuredAddress address = new typeStructuredAddress()
            {
                AddressName = "Home",
                Street      = new string[] { "2914 N. Dakota Avenue" },
                City        = "Denver",
                State       = new State()
                {
                    Value = "CO"
                },
                PostalCode = "80206",
                Country    = "US"
            };

            addressList.Add(address);

            traveler.Address = addressList.ToArray();

            travelers.Add(traveler);

            //Adding Second Booking Traveler
            BookingTraveler traveler1 = new BookingTraveler();

            traveler1.DOB          = DateTime.Now.AddYears(-20);
            traveler1.Gender       = "F";
            traveler1.TravelerType = "ADT";
            traveler1.Key          = "8s04Fns2SiizjV5Zn7T6Xw==";//The key should be unique for each traveler
            traveler1.Nationality  = "US";

            traveler1.BookingTravelerName = new BookingTravelerName()
            {
                First  = "Mary",
                Last   = "Smith",
                Prefix = "Ms"
            };

            List <PhoneNumber> phoneList1 = new List <PhoneNumber>();

            PhoneNumber phoneNum1 = new PhoneNumber()
            {
                AreaCode    = "303",
                CountryCode = "1",
                Number      = "3333333",
                Location    = "DEN"
            };

            phoneList1.Add(phoneNum1);

            traveler1.PhoneNumber = phoneList.ToArray();

            List <Email> emailList1 = new List <Email>();

            Email email1 = new Email()
            {
                EmailID = "*****@*****.**",
                Type    = "Home"
            };

            emailList1.Add(email1);

            traveler1.Email = emailList1.ToArray();


            List <SSR> ssrList1 = new List <SSR>();

            //This part is optional but required for some airlines like UA etc.
            if (airItinerary.AirSegment != null)
            {
                IEnumerator segments = airItinerary.AirSegment.GetEnumerator();
                while (segments.MoveNext())
                {
                    AirService.typeBaseAirSegment seg = (AirService.typeBaseAirSegment)segments.Current;
                    SSR ssr = new SSR()
                    {
                        Carrier    = seg.Carrier,
                        SegmentRef = seg.Key,
                        Status     = "HK",
                        Type       = "DOCS",
                        FreeText   = "P/" + traveler1.Nationality + "/F1234567/" + traveler1.Nationality + "/"
                                     + traveler1.DOB.ToString("ddMMMyy") + "/"
                                     + traveler1.Gender + "/" + DateTime.Now.AddYears(2).ToString("ddMMMyy") + "/" + traveler1.BookingTravelerName.Last
                                     + "/" + traveler1.BookingTravelerName.First
                    };

                    ssrList1.Add(ssr);
                }
            }

            traveler1.SSR = ssrList1.ToArray();

            travelers.Add(traveler1);

            return(travelers.ToArray());
        }
Example #7
0
        protected void CopyTo <T>(T dataItem) where T : BasePNRDataItem
        {
            dataItem.ID      = ID;
            dataItem.IDInPNR = IDInPNR;
            dataItem.Type    = Type;

            if (TravellerRef != null)
            {
                dataItem.TravellerRef = new RefList <int>(TravellerRef);
            }
            if (ServiceRef != null)
            {
                dataItem.ServiceRef = new RefList <int>(ServiceRef);
            }
            if (SegmentRef != null)
            {
                dataItem.SegmentRef = new RefList <int>(SegmentRef);
            }

            #region Клонирование внутренних элементов
            switch (Type)
            {
            case PNRDataItemType.Remark:
                dataItem.Remark = Remark?.Copy();
                break;

            case PNRDataItemType.TL:
                dataItem.TimeLimits = TimeLimits?.Copy();
                break;

            case PNRDataItemType.SSR:
                dataItem.SSR = SSR?.DeepCopy();
                break;

            case PNRDataItemType.Commission:
                dataItem.Commission = Commission?.Copy();
                break;

            case PNRDataItemType.FOP:
                dataItem.FOPInfo = FOPInfo?.Copy();
                break;

            case PNRDataItemType.SourceInfo:
                dataItem.SourceInfo = SourceInfo?.Copy();
                break;

            case PNRDataItemType.IDDocument:
                dataItem.Document = Document?.Copy();
                break;

            case PNRDataItemType.ContactInfo:
                dataItem.ContactInfo = ContactInfo?.Copy();
                break;

            case PNRDataItemType.LoyaltyCard:
                dataItem.LoyaltyCard = LoyaltyCard?.Copy();
                break;

            case PNRDataItemType.Meal:
                dataItem.Meal = Meal?.DeepCopy();
                break;

            case PNRDataItemType.ED:
                dataItem.ElectronicDocument = ElectronicDocument?.DeepCopy();
                break;

            case PNRDataItemType.PD:
                dataItem.PaperDocument = PaperDocument?.Copy();
                break;

            case PNRDataItemType.FE:
                dataItem.Endorsements = Endorsements?.Copy();
                break;

            case PNRDataItemType.Visa:
                dataItem.Visa = Visa?.Copy();
                break;

            case PNRDataItemType.ArrivalAddress:
                dataItem.ArrivalAddress = ArrivalAddress?.Copy();
                break;

            case PNRDataItemType.BookedSeat:
                dataItem.BookedSeat = BookedSeat?.Copy();
                break;

            case PNRDataItemType.ValidatingCompany:
                dataItem.ValidatingCompany = ValidatingCompany?.Copy();
                break;

            case PNRDataItemType.TourCode:
                dataItem.TourCode = TourCode?.Copy();
                break;

            case PNRDataItemType.Discount:
                dataItem.Discount = Discount?.Copy();
                break;

            case PNRDataItemType.FareSourceCode:
                dataItem.FareSourceCode = FareSourceCode?.Copy();
                break;

            case PNRDataItemType.AdditionalLocators:
                dataItem.AdditionalLocators = AdditionalLocators?.Copy();
                break;

            case PNRDataItemType.OSI:
                dataItem.OSI = OSI?.Copy();
                break;

            case PNRDataItemType.ReferencedBooks:
                dataItem.ReferencedBooks = ReferencedBooks?.Copy();
                break;

            case PNRDataItemType.FareInfo:
                dataItem.FareInfo = FareInfo?.Copy();
                break;

            case PNRDataItemType.DiscountDocument:
                dataItem.DiscountDocument = DiscountDocument?.Copy();
                break;

            case PNRDataItemType.VoucherFile:
                dataItem.Voucher = Voucher?.Copy();
                break;

            case PNRDataItemType.LinkedBooks:
                dataItem.LinkedBooks = LinkedBooks?.Copy();
                break;
            }
            #endregion
        }
Example #8
0
        /// <summary>
        /// Build passenger data.
        /// Original from https://www.iata.org/iata/passenger-data-toolkit/assets/doc_library/04-pnr/PNRGOV%20EDIFACT%20Implementation%20Guide%2013_1.pdf
        /// </summary>
        static TSPNRGOV BuildPassengerData(string controlNumber)
        {
            var result = new TSPNRGOV();

            //  Message header
            result.UNH = new UNH();
            result.UNH.MessageReferenceNumber_01                      = controlNumber.PadLeft(14, '0');
            result.UNH.MessageIdentifier_02                           = new S009();
            result.UNH.MessageIdentifier_02.MessageType_01            = "PNRGOV";
            result.UNH.MessageIdentifier_02.MessageVersionNumber_02   = "11";
            result.UNH.MessageIdentifier_02.MessageReleaseNumber_03   = "1";
            result.UNH.MessageIdentifier_02.ControllingAgencyCoded_04 = "IA";
            result.UNH.CommonAccessReference_03                       = "AM498/230513/1142";

            //  Code to specify the message function
            result.MSG = new MSG();
            result.MSG.MESSAGEFUNCTIONBUSINESSDETAILS_01 = new C302();
            result.MSG.MESSAGEFUNCTIONBUSINESSDETAILS_01.MessageFunction_02 = "22";

            //  The originator of the request is AM
            result.ORG = new ORG();
            result.ORG.SYSTEMDETAILS_01 = new C336();
            result.ORG.SYSTEMDETAILS_01.CompanyIdentification_01 = "AM";

            //  PNR data for AM498/23MAY13 MTY LAS
            result.TVL = new TVL();
            result.TVL.PRODUCTDATETIME_01 = new C310();
            result.TVL.PRODUCTDATETIME_01.FirstDate_01  = "230513";
            result.TVL.PRODUCTDATETIME_01.FirstTime_02  = "1039";
            result.TVL.PRODUCTDATETIME_01.SecondDate_03 = "230513";
            result.TVL.PRODUCTDATETIME_01.SecondTime_04 = "1142";
            result.TVL.LOCATION_02 = new C328();
            result.TVL.LOCATION_02.PlaceLocationIdentification_01 = "MTY";
            result.TVL.LOCATION2_03 = new C328();
            result.TVL.LOCATION2_03.PlaceLocationIdentification_01 = "LAS";
            result.TVL.COMPANYIDENTIFICATION_04 = new C306();
            result.TVL.COMPANYIDENTIFICATION_04.CompanyIdentification_01 = "AM";
            result.TVL.PRODUCTIDENTIFICATIONDETAILS_05 = new C308();
            result.TVL.PRODUCTIDENTIFICATIONDETAILS_05.ProductionIdentification_01 = "498";

            //  Total numbers of PNRs
            result.EQN = new EQN();
            result.EQN.NUMBEROFUNITDETAILS_01 = new List <C523>();
            var c523 = new C523();

            c523.NumberOfUnits_01 = "1";
            result.EQN.NUMBEROFUNITDETAILS_01.Add(c523);

            //  Repeating SRC Groups
            result.GR1_SRCLoop = new List <GR1_SRCLoop>();

            //  Begin SRC Group
            var srcLoop = new GR1_SRCLoop();

            //  Situational blank SRC
            srcLoop.SRC = new SRC();

            //  Passenger record reference
            srcLoop.RCI = new RCI();
            srcLoop.RCI.RESERVATIONCONTROLINFORMATION_01 = new List <C330>();
            var c330 = new C330();

            c330.CompanyIdentification_01    = "AM";
            c330.ReservationControlNumber_02 = "XXXYET";
            c330.FirstDate_04 = "300413";
            c330.Time_05      = "115500";
            srcLoop.RCI.RESERVATIONCONTROLINFORMATION_01.Add(c330);

            //  Repeating SSR
            srcLoop.SSR = new List <SSR>();

            //  Special requirements /general information-applies to all flights and all passengers
            var ssrSrc1 = new SSR();

            ssrSrc1.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrSrc1.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01       = "OTHS";
            ssrSrc1.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = " ADV TKT NUMBER BY 03MAY13 1800CO OR WILL CANCEL";
            srcLoop.SSR.Add(ssrSrc1);

            //  Special requirements 2
            var ssrSrc2 = new SSR();

            ssrSrc2.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrSrc2.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01       = "OTHS";
            ssrSrc2.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = " IF THE FARE RULE TL DIFFERS FROM THE AUTOMATIC";
            srcLoop.SSR.Add(ssrSrc2);

            //  //  Special requirements 3
            var ssrSrc3 = new SSR();

            ssrSrc3.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrSrc3.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01       = "OTHS";
            ssrSrc3.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = " TL THE MOST RESTRICTIVE TL WILL APPLY";
            srcLoop.SSR.Add(ssrSrc3);

            //  Ticket issue / last PNR transaction date/Time
            srcLoop.DAT = new DAT();
            srcLoop.DAT.DATEANDTIMEDETAILS_01 = new List <C688>();
            var c688 = new C688();

            c688.DateTimePeriodQualifier_01 = "700";
            c688.FirstDate_02 = "180513";
            c688.FirstTime_03 = "1502";
            srcLoop.DAT.DATEANDTIMEDETAILS_01.Add(c688);

            //  Booked by AM, BOG agent
            srcLoop.ORG = new ORG();
            srcLoop.ORG.SYSTEMDETAILS_01 = new C336();
            srcLoop.ORG.SYSTEMDETAILS_01.CompanyIdentification_01       = "AM";
            srcLoop.ORG.SYSTEMDETAILS_01.PlaceLocationIdentification_02 = "BOG";

            //  Repeating TIF Groups
            srcLoop.GR2_TIFLoop = new List <GR2_TIFLoop>();

            //  Begin TIF Group 1
            var tifLoop1 = new GR2_TIFLoop();

            //  Adult passenger’s name & surname
            tifLoop1.TIF = new TIF();
            tifLoop1.TIF.TRAVELLERSURNAMEINFORMATION_01 = new C322();
            tifLoop1.TIF.TRAVELLERSURNAMEINFORMATION_01.TravellerSurname_01 = "TESTSURNAMEONE";
            tifLoop1.TIF.TRAVELLERDETAILS_02 = new List <C324>();
            var c324 = new C324();

            c324.TravellerGivenName_01       = "TESTNAMEONE MRS";
            c324.NumberOfUnitsQualifier_02   = "A";
            c324.TravellerReferenceNumber_03 = "1.1";
            c324.TravellerAccompaniedByInfantIndicator_04 = "1";
            tifLoop1.TIF.TRAVELLERDETAILS_02.Add(c324);

            //  Repeating SSR
            tifLoop1.SSR = new List <SSR>();

            //  Infant information: surname/name/DOB
            var ssrTif1 = new SSR();

            ssrTif1.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTif1.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "INFT";
            ssrTif1.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "NN";
            ssrTif1.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTif1.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTif1.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "TESTSURNAMETWO/TESTNAMETWO/10AUG11";
            ssrTif1.SPECIALREQUIREMENTDATADETAILS_02 = new List <C332>();
            var c3321 = new C332();

            c3321.TravellerReferenceNumber_03 = "1.1";
            ssrTif1.SPECIALREQUIREMENTDATADETAILS_02.Add(c3321);
            tifLoop1.SSR.Add(ssrTif1);

            //  Infant information: surname/name/DOB
            var ssrTif2 = new SSR();

            ssrTif2.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTif2.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "INFT";
            ssrTif2.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "NN";
            ssrTif2.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTif2.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTif2.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "TESTSURNAMETWO/TESTNAMETWO/10AUG11";
            ssrTif2.SPECIALREQUIREMENTDATADETAILS_02 = new List <C332>();
            var c3322 = new C332();

            c3322.TravellerReferenceNumber_03 = "1.1";
            ssrTif2.SPECIALREQUIREMENTDATADETAILS_02.Add(c3322);
            tifLoop1.SSR.Add(ssrTif2);

            //  Ticketing details for adult MEX CUN
            var ssrTif3 = new SSR();

            ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
            ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "HK";
            ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07              = "MEX";
            ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08  = "CUN";
            ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "1392178947000C2";
            ssrTif3.SPECIALREQUIREMENTDATADETAILS_02 = new List <C332>();
            var c3323 = new C332();

            c3323.TravellerReferenceNumber_03 = "1.1";
            ssrTif3.SPECIALREQUIREMENTDATADETAILS_02.Add(c3323);
            tifLoop1.SSR.Add(ssrTif3);

            //  Ticketing details for adult CUN BOG
            var ssrTif4 = new SSR();

            ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
            ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "HK";
            ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07              = "CUN";
            ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08  = "BOG";
            ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "1392178947000C3";
            ssrTif4.SPECIALREQUIREMENTDATADETAILS_02 = new List <C332>();
            var c3324 = new C332();

            c3324.TravellerReferenceNumber_03 = "1.1";
            ssrTif4.SPECIALREQUIREMENTDATADETAILS_02.Add(c3324);
            tifLoop1.SSR.Add(ssrTif4);

            //  Ticketing details for infant MEX CUN
            var ssrTif5 = new SSR();

            ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
            ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "HK";
            ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07              = "MEX";
            ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08  = "CUN";
            ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "INF1392178947000C2";
            ssrTif5.SPECIALREQUIREMENTDATADETAILS_02 = new List <C332>();
            var c3325 = new C332();

            c3325.TravellerReferenceNumber_03 = "1.1";
            ssrTif5.SPECIALREQUIREMENTDATADETAILS_02.Add(c3325);
            tifLoop1.SSR.Add(ssrTif5);

            //  Ticketing details for infant CUN BOG
            var ssrTif6 = new SSR();

            ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
            ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "HK";
            ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07              = "CUN";
            ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08  = "BOG";
            ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "INF1392178947000C3";
            ssrTif6.SPECIALREQUIREMENTDATADETAILS_02 = new List <C332>();
            var c3326 = new C332();

            c3326.TravellerReferenceNumber_03 = "1.1";
            ssrTif6.SPECIALREQUIREMENTDATADETAILS_02.Add(c3326);
            tifLoop1.SSR.Add(ssrTif6);

            //  Passport information for adult
            var ssrTif7 = new SSR();

            ssrTif7.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTif7.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "DOCS";
            ssrTif7.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "HK";
            ssrTif7.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTif7.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTif7.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "/P/CO/52263000/CO/30MAY76/F/31OCT15/TESTSURNAMEONE/TESTNAMEONE MRS";
            ssrTif7.SPECIALREQUIREMENTDATADETAILS_02 = new List <C332>();
            var c3327 = new C332();

            c3327.TravellerReferenceNumber_03 = "1.1";
            ssrTif7.SPECIALREQUIREMENTDATADETAILS_02.Add(c3327);
            tifLoop1.SSR.Add(ssrTif7);

            //  Passport information for infant
            var ssrTif8 = new SSR();

            ssrTif8.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTif8.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "DOCS";
            ssrTif8.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "HK";
            ssrTif8.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTif8.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTif8.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "/P/COL/AO234000/COL/10AUG11/FI/21DEC22/TESTSURNAMETWO/TESTNAMETWO";
            ssrTif8.SPECIALREQUIREMENTDATADETAILS_02 = new List <C332>();
            var c3328 = new C332();

            c3328.TravellerReferenceNumber_03 = "1.1";
            ssrTif8.SPECIALREQUIREMENTDATADETAILS_02.Add(c3328);
            tifLoop1.SSR.Add(ssrTif8);

            //  End TIF Group 1
            srcLoop.GR2_TIFLoop.Add(tifLoop1);

            //  Begin TIF Group 2
            var tifLoop2 = new GR2_TIFLoop();

            //  Infant passenger’s name & surname
            tifLoop2.TIF = new TIF();
            tifLoop2.TIF.TRAVELLERSURNAMEINFORMATION_01 = new C322();
            tifLoop2.TIF.TRAVELLERSURNAMEINFORMATION_01.TravellerSurname_01 = "TESTSURNAMETWO";
            tifLoop2.TIF.TRAVELLERDETAILS_02 = new List <C324>();
            var c3242 = new C324();

            c3242.TravellerGivenName_01       = "TESTNAMETWO";
            c3242.NumberOfUnitsQualifier_02   = "IN";
            c3242.TravellerReferenceNumber_03 = "2.1";
            tifLoop2.TIF.TRAVELLERDETAILS_02.Add(c3242);

            //  Repeating IFT
            tifLoop2.IFT = new List <IFT>();

            //  OSI free text information
            var iftTif1 = new IFT();

            iftTif1.FREETEXTQUALIFICATION_01 = new C346();
            iftTif1.FREETEXTQUALIFICATION_01.TextSubjectQualifier_01 = "4";
            iftTif1.FREETEXTQUALIFICATION_01.InformationType_02      = "28";
            iftTif1.FreeText_02 = new List <string>();
            iftTif1.FreeText_02.Add("AM INF");
            tifLoop2.IFT.Add(iftTif1);

            //  End TIF Group 2
            srcLoop.GR2_TIFLoop.Add(tifLoop2);

            //  Repeating TVL SRC Groups
            srcLoop.GR5_TVLLoop = new List <GR5_TVLLoop>();

            //  Begin TVL SRC Group 1
            var tvlSrc1 = new GR5_TVLLoop();

            //  PNR data for AM709/15MAY13 BOG MEX
            tvlSrc1.TVL = new TVL();
            tvlSrc1.TVL.PRODUCTDATETIME_01 = new C310();
            tvlSrc1.TVL.PRODUCTDATETIME_01.FirstDate_01  = "150513";
            tvlSrc1.TVL.PRODUCTDATETIME_01.FirstTime_02  = "0105";
            tvlSrc1.TVL.PRODUCTDATETIME_01.SecondDate_03 = "150513";
            tvlSrc1.TVL.PRODUCTDATETIME_01.SecondTime_04 = "0557";
            tvlSrc1.TVL.LOCATION_02 = new C328();
            tvlSrc1.TVL.LOCATION_02.PlaceLocationIdentification_01 = "BOG";
            tvlSrc1.TVL.LOCATION2_03 = new C328();
            tvlSrc1.TVL.LOCATION2_03.PlaceLocationIdentification_01 = "MEX";
            tvlSrc1.TVL.COMPANYIDENTIFICATION_04 = new C306();
            tvlSrc1.TVL.COMPANYIDENTIFICATION_04.CompanyIdentification_01 = "AM";
            tvlSrc1.TVL.PRODUCTIDENTIFICATIONDETAILS_05 = new C308();
            tvlSrc1.TVL.PRODUCTIDENTIFICATIONDETAILS_05.ProductionIdentification_01     = "709";
            tvlSrc1.TVL.PRODUCTIDENTIFICATIONDETAILS_05.CharacteristicIdentification_02 = "R";

            //  Flight booking status for 1 adult passenger
            tvlSrc1.RPI             = new RPI();
            tvlSrc1.RPI.Quantity_01 = "1";
            tvlSrc1.RPI.Status_02   = new List <string>();
            tvlSrc1.RPI.Status_02.Add("YG");

            //  Equipment Type- Boeing 737
            tvlSrc1.APD = new APD();
            tvlSrc1.APD.ADDITIONALPRODUCTDETAILS_01 = new C314();
            tvlSrc1.APD.ADDITIONALPRODUCTDETAILS_01.TypeOfMeansOfTransport_01 = "737";

            //  AM passenger record reference
            tvlSrc1.RCI = new RCI();
            tvlSrc1.RCI.RESERVATIONCONTROLINFORMATION_01 = new List <C330>();
            var c3302 = new C330();

            c3302.CompanyIdentification_01    = "AM";
            c3302.ReservationControlNumber_02 = "XXXYET";
            c3302.FirstDate_04 = "300413";
            c3302.Time_05      = "115500";
            tvlSrc1.RCI.RESERVATIONCONTROLINFORMATION_01.Add(c3302);

            //  End TVL SRC Group 1
            srcLoop.GR5_TVLLoop.Add(tvlSrc1);

            //  Begin TVL SRC Group 2
            var tvlSrc2 = new GR5_TVLLoop();

            //  PNR data for AM445/19MAY13 MEX CUN
            tvlSrc2.TVL = new TVL();
            tvlSrc2.TVL.PRODUCTDATETIME_01 = new C310();
            tvlSrc2.TVL.PRODUCTDATETIME_01.FirstDate_01  = "190513";
            tvlSrc2.TVL.PRODUCTDATETIME_01.FirstTime_02  = "1500";
            tvlSrc2.TVL.PRODUCTDATETIME_01.SecondDate_03 = "190513";
            tvlSrc2.TVL.PRODUCTDATETIME_01.SecondTime_04 = "1710";
            tvlSrc2.TVL.LOCATION_02 = new C328();
            tvlSrc2.TVL.LOCATION_02.PlaceLocationIdentification_01 = "MEX";
            tvlSrc2.TVL.LOCATION2_03 = new C328();
            tvlSrc2.TVL.LOCATION2_03.PlaceLocationIdentification_01 = "CUN";
            tvlSrc2.TVL.COMPANYIDENTIFICATION_04 = new C306();
            tvlSrc2.TVL.COMPANYIDENTIFICATION_04.CompanyIdentification_01 = "AM";
            tvlSrc2.TVL.PRODUCTIDENTIFICATIONDETAILS_05 = new C308();
            tvlSrc2.TVL.PRODUCTIDENTIFICATIONDETAILS_05.ProductionIdentification_01     = "445";
            tvlSrc2.TVL.PRODUCTIDENTIFICATIONDETAILS_05.CharacteristicIdentification_02 = "S";

            //  Flight booking status for 1 adult passenger
            tvlSrc2.RPI             = new RPI();
            tvlSrc2.RPI.Quantity_01 = "1";
            tvlSrc2.RPI.Status_02   = new List <string>();
            tvlSrc2.RPI.Status_02.Add("HK");

            //  Equipment Type
            tvlSrc2.APD = new APD();
            tvlSrc2.APD.ADDITIONALPRODUCTDETAILS_01 = new C314();
            tvlSrc2.APD.ADDITIONALPRODUCTDETAILS_01.TypeOfMeansOfTransport_01 = "738";

            //  Repeating SSR
            tvlSrc2.SSR = new List <SSR>();

            //  Infant information: surname/name/DOB
            var ssrTvl1 = new SSR();

            ssrTvl1.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTvl1.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "INFT";
            ssrTvl1.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "NN";
            ssrTvl1.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTvl1.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTvl1.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "TESTSURNAMETWO/TESTNAMETWO/10AUG11";
            tvlSrc2.SSR.Add(ssrTvl1);

            //  Ticketing details for adult MEX CUN
            var ssrTvl2 = new SSR();

            ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
            ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "HK";
            ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07              = "MEX";
            ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08  = "CUN";
            ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "1392178947000C2";
            tvlSrc2.SSR.Add(ssrTvl2);

            //  Ticketing details for infant MEX CUN
            var ssrTvl3 = new SSR();

            ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
            ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "HK";
            ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07              = "MEX";
            ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08  = "CUN";
            ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "INF1392178947000C2";
            tvlSrc2.SSR.Add(ssrTvl3);

            //  AM passenger record reference
            tvlSrc2.RCI = new RCI();
            tvlSrc2.RCI.RESERVATIONCONTROLINFORMATION_01 = new List <C330>();
            var c3303 = new C330();

            c3303.CompanyIdentification_01    = "AM";
            c3303.ReservationControlNumber_02 = "XXXYET";
            c3303.FirstDate_04 = "300413";
            c3303.Time_05      = "115500";
            tvlSrc2.RCI.RESERVATIONCONTROLINFORMATION_01.Add(c3303);

            //  End TVL SRC Group 2
            srcLoop.GR5_TVLLoop.Add(tvlSrc2);

            //  Begin TVL SRC Group 3
            var tvlSrc3 = new GR5_TVLLoop();

            //  PNR data for AM718/23MAY13 CUN BOG
            tvlSrc3.TVL = new TVL();
            tvlSrc3.TVL.PRODUCTDATETIME_01 = new C310();
            tvlSrc3.TVL.PRODUCTDATETIME_01.FirstDate_01  = "230513";
            tvlSrc3.TVL.PRODUCTDATETIME_01.FirstTime_02  = "0135";
            tvlSrc3.TVL.PRODUCTDATETIME_01.SecondDate_03 = "230513";
            tvlSrc3.TVL.PRODUCTDATETIME_01.SecondTime_04 = "0500";
            tvlSrc3.TVL.LOCATION_02 = new C328();
            tvlSrc3.TVL.LOCATION_02.PlaceLocationIdentification_01 = "CUN";
            tvlSrc3.TVL.LOCATION2_03 = new C328();
            tvlSrc3.TVL.LOCATION2_03.PlaceLocationIdentification_01 = "BOG";
            tvlSrc3.TVL.COMPANYIDENTIFICATION_04 = new C306();
            tvlSrc3.TVL.COMPANYIDENTIFICATION_04.CompanyIdentification_01 = "AM";
            tvlSrc3.TVL.PRODUCTIDENTIFICATIONDETAILS_05 = new C308();
            tvlSrc3.TVL.PRODUCTIDENTIFICATIONDETAILS_05.ProductionIdentification_01     = "718";
            tvlSrc3.TVL.PRODUCTIDENTIFICATIONDETAILS_05.CharacteristicIdentification_02 = "Q";

            //  Flight booking status for 1 passenger
            tvlSrc3.RPI             = new RPI();
            tvlSrc3.RPI.Quantity_01 = "1";
            tvlSrc3.RPI.Status_02   = new List <string>();
            tvlSrc3.RPI.Status_02.Add("HK");

            //  Equipment Type
            tvlSrc3.APD = new APD();
            tvlSrc3.APD.ADDITIONALPRODUCTDETAILS_01 = new C314();
            tvlSrc3.APD.ADDITIONALPRODUCTDETAILS_01.TypeOfMeansOfTransport_01 = "737";

            //  Repeating SSR
            tvlSrc3.SSR = new List <SSR>();

            //  Infant information: surname/name/DOB
            var ssrTvl4 = new SSR();

            ssrTvl4.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTvl4.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "INFT";
            ssrTvl4.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "NN";
            ssrTvl4.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTvl4.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTvl4.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "TESTSURNAMETWO/TESTNAMETWO/10AUG11";
            tvlSrc3.SSR.Add(ssrTvl4);

            //  Ticketing details for adult CUN BOG
            var ssrTvl5 = new SSR();

            ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
            ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "HK";
            ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07              = "CUN";
            ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08  = "BOG";
            ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "1392178947000C3";
            tvlSrc3.SSR.Add(ssrTvl5);

            //  Ticketing details for infant CUN BOG
            var ssrTvl6 = new SSR();

            ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
            ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
            ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02   = "HK";
            ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
            ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04        = "AM";
            ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07              = "CUN";
            ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08  = "BOG";
            ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "INF1392178947000C3";
            tvlSrc3.SSR.Add(ssrTvl6);

            //  AM passenger record reference
            tvlSrc3.RCI = new RCI();
            tvlSrc3.RCI.RESERVATIONCONTROLINFORMATION_01 = new List <C330>();
            var c3304 = new C330();

            c3304.CompanyIdentification_01    = "AM";
            c3304.ReservationControlNumber_02 = "XXXYET";
            c3304.FirstDate_04 = "300413";
            c3304.Time_05      = "115500";
            tvlSrc3.RCI.RESERVATIONCONTROLINFORMATION_01.Add(c3304);

            //  End TVL SRC Group 3
            srcLoop.GR5_TVLLoop.Add(tvlSrc3);

            //  End SRC Group
            result.GR1_SRCLoop.Add(srcLoop);

            return(result);
        }
        private BookingTraveler[] AddBookingTraveler(AirService.AirItinerary airItinerary)
        {

            List<BookingTraveler> travelers = new List<BookingTraveler>();


            BookingTraveler traveler = new BookingTraveler();
            traveler.DOB = DateTime.Now.AddYears(-28);
            traveler.Gender = "M";
            traveler.TravelerType = "ADT";
            traveler.Key = "gr8AVWGCR064r57Jt0+8bA==";
            traveler.Nationality = "US";

            traveler.BookingTravelerName = new BookingTravelerName()
            {
                First = "Jack",
                Last = "Smith",
                Prefix = "Mr"
            };

            DeliveryInfoShippingAddress shipping = new DeliveryInfoShippingAddress()
            {
                AddressName = "Home",
                Street = new string[] { "2914 N. Dakota Avenue" },
                City = "Denver",
                State = new State()
                {
                    Value = "CO"
                },
                PostalCode = "80206",
                Country = "US"
            };

            List<DeliveryInfo> deliveryInfoList = new List<DeliveryInfo>();
            DeliveryInfo deliveryInfo = new DeliveryInfo()
            {
                ShippingAddress = shipping
            };

            deliveryInfoList.Add(deliveryInfo);

            traveler.DeliveryInfo = deliveryInfoList.ToArray();

            List<PhoneNumber> phoneList = new List<PhoneNumber>();

            PhoneNumber phoneNum = new PhoneNumber()
            {
                AreaCode = "303",
                CountryCode = "1",
                Number = "3333333",
                Location = "DEN"
            };

            phoneList.Add(phoneNum);

            traveler.PhoneNumber = phoneList.ToArray();

            List<Email> emailList = new List<Email>();

            Email email = new Email()
            {
                EmailID = "*****@*****.**",
                Type = "Home"
            };

            emailList.Add(email);

            traveler.Email = emailList.ToArray();


            List<SSR> ssrList = new List<SSR>();
            //This part is optional but required for some airlines like UA etc.
            if (airItinerary.AirSegment != null)
            {
                IEnumerator segments = airItinerary.AirSegment.GetEnumerator();
                while (segments.MoveNext())
                {
                    AirService.typeBaseAirSegment seg = (AirService.typeBaseAirSegment)segments.Current;
                    SSR ssr = new SSR()
                    {
                        Carrier = seg.Carrier,
                        SegmentRef = seg.Key,
                        Status = "HK",
                        Type = "DOCS",
                        FreeText = "P/" + traveler.Nationality + "/F1234567/" + traveler.Nationality + "/"
                                    + traveler.DOB.ToString("ddMMMyy") + "/"
                                    + traveler.Gender + "/" + DateTime.Now.AddYears(2).ToString("ddMMMyy") + "/" + traveler.BookingTravelerName.Last
                                    + "/" + traveler.BookingTravelerName.First

                    };

                    ssrList.Add(ssr);

                }
            }

            traveler.SSR = ssrList.ToArray();

            List<typeStructuredAddress> addressList = new List<typeStructuredAddress>();

            typeStructuredAddress address = new typeStructuredAddress()
            {
                AddressName = "Home",
                Street = new string[] { "2914 N. Dakota Avenue" },
                City = "Denver",
                State = new State()
                {
                    Value = "CO"
                },
                PostalCode = "80206",
                Country = "US"
            };

            addressList.Add(address);

            traveler.Address = addressList.ToArray();

            travelers.Add(traveler);

            return travelers.ToArray();
        }
    public override void Render(PostProcessRenderContext RenderContent)
    {
        RenderContent.command.BeginSample("ScreenSpaceReflection");

        int2 ScreenSize = new int2(RenderContent.camera.pixelWidth, RenderContent.camera.pixelHeight);
        int2 HZBSize    = new int2(1024, 1024);
        //int2 HZBSize = ScreenSize;
        Matrix4x4 WorldToViewMatrix    = RenderContent.camera.worldToCameraMatrix;
        Matrix4x4 ProjectionMatrix     = GL.GetGPUProjectionMatrix(RenderContent.camera.projectionMatrix, false);
        Matrix4x4 ViewProjectionMatrix = ProjectionMatrix * WorldToViewMatrix;

        {
            SSRParameter.NumRays          = settings.NumRays;
            SSRParameter.NumSteps         = settings.NumSteps;
            SSRParameter.BRDFBias         = settings.BRDFBias;
            SSRParameter.Fadeness         = settings.Fadeness;
            SSRParameter.RoughnessDiscard = settings.RoughnessDiscard;
            ////////////////////////////////////////////////////////////////
            SSRInputData.FrameIndex          += 1;
            SSRInputData.Matrix_Proj          = ProjectionMatrix;
            SSRInputData.Matrix_InvProj       = ProjectionMatrix.inverse;
            SSRInputData.Matrix_InvViewProj   = ViewProjectionMatrix.inverse;
            SSRInputData.Matrix_WorldToView   = WorldToViewMatrix;
            SSRInputData.SRV_PyramidColor     = RenderContent.source;
            SSRInputData.SRV_SceneDepth       = BuiltinRenderTextureType.ResolvedDepth;
            SSRInputData.SRV_GBufferNormal    = BuiltinRenderTextureType.GBuffer2;
            SSRInputData.SRV_GBufferRoughness = BuiltinRenderTextureType.GBuffer1;
            SSRInputData.TraceResolution      = new float4(ScreenSize.x / (int)settings.RenderMode.value, ScreenSize.y / (int)settings.RenderMode.value, 1.0f / (ScreenSize.x / (int)settings.RenderMode.value), 1.0f / (ScreenSize.y / (int)settings.RenderMode.value));
        }

        {
            SVGFParamete.NumSpatial     = settings.NumSpatial;
            SVGFParamete.SpatialRadius  = settings.SpatialRadius;
            SVGFParamete.TemporalScale  = settings.TemporalScale;
            SVGFParamete.TemporalWeight = settings.TemporalWeight;
            ////////////////////////////////////////////////////////////////
            SVGFInputData.FrameIndex          += 1;
            SVGFInputData.Resolution           = new float4(ScreenSize.x, ScreenSize.y, 1.0f / ScreenSize.x, 1.0f / ScreenSize.y);
            SVGFInputData.Matrix_InvProj       = ProjectionMatrix.inverse;
            SVGFInputData.Matrix_ViewProj      = ViewProjectionMatrix;
            SVGFInputData.Matrix_InvViewProj   = ViewProjectionMatrix.inverse;
            SVGFInputData.Matrix_WorldToView   = WorldToViewMatrix;
            SVGFInputData.SRV_GBufferMotion    = BuiltinRenderTextureType.MotionVectors;
            SVGFInputData.SRV_SceneDepth       = BuiltinRenderTextureType.ResolvedDepth;
            SVGFInputData.SRV_GBufferNormal    = BuiltinRenderTextureType.GBuffer2;
            SVGFInputData.SRV_GBufferRoughness = BuiltinRenderTextureType.GBuffer1;
        }

        //////Depth Pyramid
        RenderContent.command.BeginSample("Depth Pyramid");
        RenderTextureDescriptor PyramidDepthDesc = new RenderTextureDescriptor(HZBSize.x, HZBSize.y, RenderTextureFormat.RHalf, 0)
        {
            bindMS           = false,
            useMipMap        = true,
            autoGenerateMips = false,
            dimension        = TextureDimension.Tex2D
        };

        RTV_PyramidDepth            = RenderTexture.GetTemporary(PyramidDepthDesc);
        RTV_PyramidDepth.filterMode = FilterMode.Point;

        SSRInputData.SRV_PyramidDepth = new RenderTargetIdentifier(RTV_PyramidDepth);
        RenderContent.command.BlitFullscreenTriangle(BuiltinRenderTextureType.ResolvedDepth, SSRInputData.SRV_PyramidDepth);
        PyramidDepthGenerator.DepthPyramidUpdate(ref DepthPyramidMipIDs, ref HZBSize, SSRInputData.SRV_PyramidDepth, RenderContent.command);
        RenderContent.command.EndSample("Depth Pyramid");

        //////Ray Casting
        RenderContent.command.BeginSample("Reflection Raytrace");
        RenderContent.command.GetTemporaryRT(SSRShaderID.UAV_ReflectionUVWPDF, (int)SSRInputData.TraceResolution.x, (int)SSRInputData.TraceResolution.y, 0, FilterMode.Bilinear, RenderTextureFormat.ARGBHalf, RenderTextureReadWrite.Default, 1, true);
        RenderContent.command.GetTemporaryRT(SSRShaderID.UAV_ReflectionColorMask, (int)SSRInputData.TraceResolution.x, (int)SSRInputData.TraceResolution.y, 0, FilterMode.Bilinear, RenderTextureFormat.ARGBHalf, RenderTextureReadWrite.Default, 1, true);
        RenderTargetIdentifier ReflectionUWVPDF    = new RenderTargetIdentifier(SSRShaderID.UAV_ReflectionUVWPDF);
        RenderTargetIdentifier ReflectionColorMask = new RenderTargetIdentifier(SSRShaderID.UAV_ReflectionColorMask);

        SSR.Render(RenderContent.command, ReflectionUWVPDF, ReflectionColorMask, ref SSRParameter, ref SSRInputData);
        RenderContent.command.EndSample("Reflection Raytrace");

        //////Spatial Filter
        RenderContent.command.BeginSample("Reflection SpatialFilter");
        RenderContent.command.GetTemporaryRT(SVGF_SpatialShaderID.UAV_SpatialColor, (int)SSRInputData.TraceResolution.x, (int)SSRInputData.TraceResolution.y, 0, FilterMode.Bilinear, RenderTextureFormat.ARGBHalf, RenderTextureReadWrite.Default, 1, true);
        RenderTargetIdentifier UAV_SpatialColor;

        if (settings.EnableSpatial)
        {
            UAV_SpatialColor = new RenderTargetIdentifier(SVGF_SpatialShaderID.UAV_SpatialColor);
            SVGFilter.SpatialFilter(RenderContent.command, ReflectionUWVPDF, ReflectionColorMask, UAV_SpatialColor, ref SVGFParamete, ref SVGFInputData);
        }
        else
        {
            UAV_SpatialColor = ReflectionColorMask;
        }
        RenderContent.command.EndSample("Reflection SpatialFilter");

        //////Temporal Filter
        RenderContent.command.BeginSample("Reflection TemporalFilter");
        RenderContent.command.GetTemporaryRT(SVGF_TemporalShaderID.SRV_PrevColor, (int)SSRInputData.TraceResolution.x, (int)SSRInputData.TraceResolution.y, 0, FilterMode.Bilinear, RenderTextureFormat.ARGBHalf, RenderTextureReadWrite.Default, 1, false);
        RenderContent.command.GetTemporaryRT(SVGF_TemporalShaderID.UAV_TemporalColor, (int)SSRInputData.TraceResolution.x, (int)SSRInputData.TraceResolution.y, 0, FilterMode.Bilinear, RenderTextureFormat.ARGBHalf, RenderTextureReadWrite.Default, 1, true);
        RenderTargetIdentifier SRV_PrevColor     = new RenderTargetIdentifier(SVGF_TemporalShaderID.SRV_PrevColor);
        RenderTargetIdentifier UAV_TemporalColor = new RenderTargetIdentifier(SVGF_TemporalShaderID.UAV_TemporalColor);

        SVGFilter.TemporalFilter(RenderContent.command, ReflectionUWVPDF, UAV_SpatialColor, SRV_PrevColor, UAV_TemporalColor, ref SVGFParamete, ref SVGFInputData);
        RenderContent.command.CopyTexture(UAV_TemporalColor, SRV_PrevColor);
        RenderContent.command.EndSample("Reflection TemporalFilter");

        RenderContent.command.BeginSample("Reflection Blit");
        //PropertySheet Sheet = RenderContent.propertySheets.Get(CompositingShader);
        RenderContent.command.SetGlobalMatrix("_Matrix_InvViewProj", ViewProjectionMatrix.inverse);
        RenderContent.command.SetGlobalTexture("_SRV_SSRAlpha", UAV_SpatialColor);
        RenderContent.command.SetGlobalTexture("_SRV_SSRColor", UAV_TemporalColor);
        BlitFullscreenTriangle(RenderContent.command, RenderContent.source, RenderContent.destination, CompositingMaterial, 0);
        RenderContent.command.EndSample("Reflection Blit");

        {
            RenderContent.command.ReleaseTemporaryRT(SSRShaderID.UAV_ReflectionUVWPDF);
            RenderContent.command.ReleaseTemporaryRT(SSRShaderID.UAV_ReflectionColorMask);
            RenderContent.command.ReleaseTemporaryRT(SVGF_SpatialShaderID.UAV_SpatialColor);
            RenderContent.command.ReleaseTemporaryRT(SVGF_TemporalShaderID.SRV_PrevColor);
            RenderContent.command.ReleaseTemporaryRT(SVGF_TemporalShaderID.UAV_TemporalColor);
            RenderTexture.ReleaseTemporary(RTV_PyramidDepth);
            SVGFInputData.Matrix_PrevViewProj = ViewProjectionMatrix;
        }

        RenderContent.command.EndSample("ScreenSpaceReflection");
    }