コード例 #1
0
        public string PassengerDetail2(PassengerDetailsModel model)
        {
            const string   URL_WS          = "https://webservices-as.havail.sabre.com/vn/websvc";
            HttpWebRequest request         = CreateWebRequest(URL_WS);
            XmlDocument    soapEnvelopeXml = new XmlDocument();
            var            path            = System.Web.HttpContext.Current.Server.MapPath(@"~/WS/Xml/PassengerDetails.xml");

            soapEnvelopeXml.Load(path);
            //soapEnvelopeXml.LoadXml(path);
            soapEnvelopeXml.GetElementsByTagName("mes:Timestamp")[0].InnerText           = DateTime.Now.ToString("yyyy-MM-dd'T'HH:mm:ss");
            soapEnvelopeXml.GetElementsByTagName("sec:BinarySecurityToken")[0].InnerText = model.Token;
            soapEnvelopeXml.GetElementsByTagName("mes:ConversationId")[0].InnerText      = model.ConversationID;
            XmlDocumentFragment child = soapEnvelopeXml.CreateDocumentFragment();
            var pricequote            = "";
            var index          = 0;
            var record         = 0;
            var isHaveCNNOrINF = false;
            var contactNumber  = "";
            var isHaveContact  = false;
            var Email          = "";
            var PersonName     = "";

            model.lPassenger = model.lPassenger.OrderBy(m => m.PassengerType).ToList();
            foreach (var item in model.lPassenger)
            {
                var isInf = "false";
                if (item.PassengerType.ToUpper() == "ADT")
                {
                    record = 1;
                }
                if (item.PassengerType.ToUpper() == "CNN")
                {
                    isHaveCNNOrINF = true;
                    record         = 2;
                }
                if (item.PassengerType.ToUpper() == "INF")
                {
                    isInf          = "true";
                    isHaveCNNOrINF = true;
                    record         = 3;
                }
                index++;
                var nameNumber = index + ".1";

                pricequote += " <Link hostedCarrier=\"true\" nameNumber=\"" + nameNumber + "\" record=\"" + record + "\" />";

                if (!isHaveContact && !string.IsNullOrEmpty(item.PhoneNumber))
                {
                    contactNumber = "<ContactNumber NameNumber=\"" + nameNumber + "\" Phone=\"" + item.PhoneNumber + "\" PhoneUseType=\"H\"/>";
                    Email         = "<Email Address=\"" + model.ContactEmail + "\" NameNumber=\"" + nameNumber + "\"/>";
                    isHaveContact = true;
                }

                if (item.PassengerType.ToUpper() != "INF")
                {
                    PersonName += "          <PersonName NameNumber=\"" + nameNumber + "\" Infant=\"" + isInf + "\" PassengerType=\"" + item.PassengerType.ToUpper() + "\">";
                    PersonName += "            <GivenName>" + item.GivenName.ToUpper() + " " + AIRService.WS.Helper.VNALibrary.TitleGenerator(item.PassengerType, item.Gender) + "</GivenName>";
                    PersonName += "            <Surname>" + item.Surname.ToUpper() + "</Surname>";
                    PersonName += "          </PersonName>";
                }
            }
            var SpecialReqDetails = "";

            if (isHaveCNNOrINF)
            {
                SpecialReqDetails += "      <SpecialReqDetails>";
                SpecialReqDetails += "        <SpecialServiceRQ>";
                SpecialReqDetails += "          <SpecialServiceInfo>";
                var segmentNumber = 0;
                foreach (var item in model.AirBook.OriginDestinationOption)
                {
                    segmentNumber++;
                    index = 0;
                    var infIndex = 0;
                    foreach (var item2 in model.lPassenger)
                    {
                        index++;
                        var nameNumber = index + ".1";
                        if (item2.PassengerType.ToUpper() == "CNN")
                        {
                            SpecialReqDetails += "            <Service SegmentNumber=\"" + segmentNumber + "\" SSR_Code=\"CHLD\">";
                            SpecialReqDetails += "              <PersonName NameNumber=\"" + nameNumber + "\" />";
                            SpecialReqDetails += "              <Text>" + item2.DateOfBirth.ToString("ddMMMyy").ToUpper() + "</Text>";
                            SpecialReqDetails += "              <VendorPrefs>";
                            SpecialReqDetails += "                <Airline Hosted=\"true\"/>";
                            SpecialReqDetails += "              </VendorPrefs>";
                            SpecialReqDetails += "            </Service>";
                        }
                        if (item2.PassengerType.ToUpper() == "INF")
                        {
                            infIndex++;
                            nameNumber = infIndex + ".1";
                            var name = item2.Surname.ToUpper() + @"/" + item2.GivenName.ToUpper() +
                                       " " + AIRService.WS.Helper.VNALibrary.TitleGenerator(item2.PassengerType, item2.Gender) + @"/" + item2.DateOfBirth.ToString("ddMMMyy").ToUpper();
                            SpecialReqDetails += "            <Service SegmentNumber=\"" + segmentNumber + "\" SSR_Code=\"INFT\">";
                            SpecialReqDetails += "              <PersonName NameNumber=\"" + nameNumber + "\" />";
                            SpecialReqDetails += "              <Text>" + name + "</Text>";
                            SpecialReqDetails += "              <VendorPrefs>";
                            SpecialReqDetails += "                <Airline Hosted=\"true\"/>";
                            SpecialReqDetails += "              </VendorPrefs>";
                            SpecialReqDetails += "            </Service>";
                        }
                    }
                }
                SpecialReqDetails += "          </SpecialServiceInfo>";
                SpecialReqDetails += "        </SpecialServiceRQ>";
                SpecialReqDetails += "      </SpecialReqDetails>";
            }
            var stringXML = "";

            stringXML += " <PassengerDetailsRQ xmlns=\"http://services.sabre.com/sp/pd/v3_4\" version=\"3.4.0\">";
            stringXML += "      <PostProcessing>";
            stringXML += "        <RedisplayReservation waitInterval=\"100\"/>";
            stringXML += "        <EndTransactionRQ>";
            stringXML += "          <EndTransaction Ind=\"true\" />";
            stringXML += "          <Source ReceivedFrom=\"GOINGO\"/>";
            stringXML += "        </EndTransactionRQ>";
            stringXML += "      </PostProcessing>";
            stringXML += "      <PriceQuoteInfo>";
            stringXML += pricequote;
            stringXML += "      </PriceQuoteInfo>";
            stringXML += SpecialReqDetails;
            stringXML += "      <TravelItineraryAddInfoRQ>";
            stringXML += "        <AgencyInfo>";
            stringXML += "          <Address>";
            stringXML += "            <AddressLine>144 Doi Can</AddressLine>";
            stringXML += "            <CityName>Ha Noi</CityName>";
            stringXML += "            <CountryCode>VN</CountryCode>";
            stringXML += "            <PostalCode>10000</PostalCode>";
            stringXML += "            <StreetNmbr>144 Doi Can</StreetNmbr>";
            stringXML += "            <!--<CompanyName Code=\"SSW\"/>-->";
            stringXML += "            <VendorPrefs>";
            stringXML += "              <Airline Hosted=\"true\" />";
            stringXML += "            </VendorPrefs>";
            stringXML += "          </Address>";
            stringXML += "          <Ticketing TicketType=\"8TL30\"/>";
            stringXML += "        </AgencyInfo>";
            stringXML += "        <CustomerInfo>";
            stringXML += "          <ContactNumbers>";
            stringXML += contactNumber;
            stringXML += "          </ContactNumbers>";
            stringXML += Email;
            //personName
            stringXML     += PersonName;
            stringXML     += "        </CustomerInfo>";
            stringXML     += "      </TravelItineraryAddInfoRQ>";
            stringXML     += "    </PassengerDetailsRQ>";
            child.InnerXml = stringXML;

            return(stringXML);

            //soapEnvelopeXml.GetElementsByTagName("soapenv:Body")[0].AppendChild(child);
            //using (System.IO.Stream stream = request.GetRequestStream())
            //{
            //    soapEnvelopeXml.Save(stream);
            //}
            //using (WebResponse response = request.GetResponse())
            //{
            //    using (StreamReader rd = new StreamReader(response.GetResponseStream()))
            //    {
            //        string soapResult = rd.ReadToEnd();
            //        soapEnvelopeXml = new XmlDocument();
            //        soapEnvelopeXml.LoadXml(soapResult);
            //        if (soapEnvelopeXml.GetElementsByTagName("ApplicationResults")[0].Attributes["status"].Value.Equals("Complete"))
            //        {
            //            return soapEnvelopeXml.GetElementsByTagName("ItineraryRef")[0].Attributes["ID"].Value;
            //        }
            //        else
            //        {
            //            return "Đã có lỗi xảy ra khi đặt vé";
            //        }
            //    }
            //}
        }
コード例 #2
0
        public ActionResult BookVe(BookModel model)
        {
            try
            {
                //using (var sessionService = new SessionService())
                //{
                var sessionService = new SessionService();
                var tokenModel     = new TokenModel();
                var _session       = sessionService.GetSession();
                if (_session == null)
                {
                    return(null);
                }
                // get token
                string _token          = _session.Token;
                string _conversationId = _session.ConversationID;
                if (string.IsNullOrWhiteSpace(_token))
                {
                    return(null);
                }

                //tokenModel = wss.CreateSession();
                var airBookModel = new AirBookModel
                {
                    ConversationID = _conversationId,
                    Token          = _token
                };

                //- SessionCreateRQ
                //- OTA_AirBookLLSRQ
                //- OTA_AirPriceLLSRQ
                //- PassengerDetailsRQ
                //- EndTransactionLLSRQ
                //- SessionCloseRQ
                //seach data in web service
                List <AirBookModelSegment> airBookModelSegments = new List <AirBookModelSegment>();
                AirBookModelSegment        airBookModelSegmen   = new AirBookModelSegment();

                // #1. flight information - ***********************************************************************************************************************************
                VNAWSOTA_AirBookLLSRQSevice vNAWSOTA_AirBookLLSRQSevice = new VNAWSOTA_AirBookLLSRQSevice();
                List <AirBookModelSegment>  lstSegments = model.lFlight;
                if (lstSegments == null || lstSegments.Count == 0)
                {
                    return(Notifization.Invalid(NotifizationText.Invalid));
                }
                //
                AIRService.WebService.WSOTA_AirBookLLSRQ.OTA_AirBookRS oTA_AirBookRS = vNAWSOTA_AirBookLLSRQSevice.FUNC_OTA_AirBookRS(new AirBookModel
                {
                    Segments       = lstSegments,
                    ConversationID = _conversationId,
                    Token          = _token
                });
                //
                if (oTA_AirBookRS.ApplicationResults.Success == null)
                {
                    return(Notifization.Invalid(NotifizationText.Invalid));
                }
                //
                var _originDestinationOption = oTA_AirBookRS.OriginDestinationOption.ToList();
                if (_originDestinationOption.Count == 0)
                {
                    return(Notifization.NotFound(NotifizationText.NotFound));
                }
                // #2. Get price - ***************************************************************************************************************************************************
                airBookModel.Segments = model.lFlight;
                var airPriceModel = new AirPriceModel
                {
                    ConversationID = _conversationId,
                    Token          = _token,
                    lFlight        = model.lFlight
                };
                foreach (var item in model.lPassenger)
                {
                    if (item.PassengerType.ToUpper() == "ADT")
                    {
                        airPriceModel.ADT++;
                        continue;
                    }
                    if (item.PassengerType.ToUpper() == "CNN")
                    {
                        airPriceModel.CNN++;
                        continue;
                    }
                    if (item.PassengerType.ToUpper() == "INF")
                    {
                        airPriceModel.INF++;
                        continue;
                    }
                }
                VNAWSOTA_AirPriceLLSRQService vNAWSOTA_AirPriceLLSRQService = new VNAWSOTA_AirPriceLLSRQService();
                var airPriceData = vNAWSOTA_AirPriceLLSRQService.AirPrice(airPriceModel);
                //
                if (airPriceData.ApplicationResults.Success == null)
                {
                    return(Notifization.Invalid(NotifizationText.Invalid));
                }
                // #3. Get PNA code - **************************************************************************************************************************************************
                var result = new BookVeResult
                {
                    lPricingInPNR = new List <PricingInPNR>()
                };
                foreach (var item in airPriceData.PriceQuote.PricedItinerary.AirItineraryPricingInfo)
                {
                    foreach (var iter in model.lPassenger.Where(m => m.PassengerType.ToUpper().Equals(item.PassengerTypeQuantity.Code)))
                    {
                        var price = new PricingInPNR
                        {
                            DateOfBirth = iter.DateOfBirth,
                            SurName     = iter.Surname,
                            GivenName   = iter.GivenName,
                            type        = iter.PassengerType.ToUpper(),
                            Fare        = double.Parse(item.ItinTotalFare.BaseFare.Amount)
                        };
                        foreach (var tax in item.ItinTotalFare.Taxes.Tax)
                        {
                            if (tax.TaxCode.Equals("YRI"))
                            {
                                price.ServiceFee = double.Parse(tax.Amount);
                            }
                            if (tax.TaxCode.Equals("UE3"))
                            {
                                price.TaxFee = double.Parse(tax.Amount);
                            }
                            if (tax.TaxCode.Equals("AX"))
                            {
                                price.VAT = double.Parse(tax.Amount);
                            }
                            if (tax.TaxCode.Equals("C4"))
                            {
                                price.ScanFee = double.Parse(tax.Amount);
                            }
                        }
                        result.lPricingInPNR.Add(price);
                    }
                }
                result.Total     = double.Parse(airPriceData.PriceQuote.PricedItinerary.TotalAmount);
                model.lPassenger = model.lPassenger.OrderBy(m => m.PassengerType).ToList();
                // create model passenger details model
                var passengerDetailModel = new PassengerDetailsModel
                {
                    ContactEmail   = model.ContactEmail,
                    ConversationID = _conversationId,
                    Token          = _token,
                    lPassenger     = model.lPassenger,
                    AirBook        = oTA_AirBookRS
                };
                // call service  passenger details in ws.service
                VNAWSPassengerDetailsRQService vNAWSPassengerDetailsRQService = new VNAWSPassengerDetailsRQService();
                AIRService.WebService.WSPassengerDetailsRQ.PassengerDetailsRS passengerDetailsRS = vNAWSPassengerDetailsRQService.PassengerDetail(passengerDetailModel);
                //string a = vNAWSPassengerDetailsRQService.PassengerDetail(passengerDetailModel);
                // end  transaction
                VNATransaction vNATransaction = new VNATransaction();
                //vNATransaction.EndTransaction(tokenModel);
                var End = vNATransaction.EndTransaction(_session);
                End = vNATransaction.EndTransaction(_session);
                //  retur value
                return(Notifization.Data("OK", passengerDetailsRS));
                //}
            }
            catch (Exception ex)
            {
                return(Notifization.TEST("OK" + ex));
            }
        }
コード例 #3
0
        public AIRService.WebService.WSPassengerDetailsRQ.PassengerDetailsRS PassengerDetail(PassengerDetailsModel model)
        {
            string _token          = model.Token;
            string _conversationId = model.ConversationID;

            WebService.WSPassengerDetailsRQ.MessageHeader messageHeader = new WebService.WSPassengerDetailsRQ.MessageHeader
            {
                MessageData = new WebService.WSPassengerDetailsRQ.MessageData()
            };
            messageHeader.MessageData.Timestamp = DateTime.Now.ToString("s").Replace("-", "").Replace(":", "") + "Z";
            messageHeader.ConversationId        = _conversationId;
            messageHeader.Service = new WebService.WSPassengerDetailsRQ.Service();
            messageHeader.Action  = "PassengerDetailsRQ";

            messageHeader.From = new WebService.WSPassengerDetailsRQ.From
            {
                PartyId = new WebService.WSPassengerDetailsRQ.PartyId[1]
            };
            var partyID = new WebService.WSPassengerDetailsRQ.PartyId
            {
                Value = "WebServiceClient"
            };

            messageHeader.From.PartyId[0] = partyID;

            messageHeader.To = new WebService.WSPassengerDetailsRQ.To
            {
                PartyId = new WebService.WSPassengerDetailsRQ.PartyId[1]
            };
            partyID = new WebService.WSPassengerDetailsRQ.PartyId
            {
                Value = "WebServiceSupplier"
            };
            messageHeader.To.PartyId[0] = partyID;
            //  header info
            WebService.WSPassengerDetailsRQ.Security security = new WebService.WSPassengerDetailsRQ.Security
            {
                BinarySecurityToken = _token
            };

            AIRService.WebService.WSPassengerDetailsRQ.PassengerDetailsRQ passengerDetailsRQ = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQ();
            //PostProcessing
            passengerDetailsRQ.PostProcessing = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQPostProcessing();
            passengerDetailsRQ.PostProcessing.RedisplayReservation = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQPostProcessingRedisplayReservation
            {
                waitInterval = "100"
            };
            passengerDetailsRQ.PostProcessing.EndTransactionRQ = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQPostProcessingEndTransactionRQ();
            passengerDetailsRQ.PostProcessing.EndTransactionRQ.EndTransaction      = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQPostProcessingEndTransactionRQEndTransaction();
            passengerDetailsRQ.PostProcessing.EndTransactionRQ.EndTransaction.Ind  = true;
            passengerDetailsRQ.PostProcessing.EndTransactionRQ.Source              = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQPostProcessingEndTransactionRQSource();
            passengerDetailsRQ.PostProcessing.EndTransactionRQ.Source.ReceivedFrom = "GOINGO";
            // PriceQuoteInfo
            var lstPassenger = model.lPassenger.OrderBy(m => m.PassengerType).ToList();
            int idxLink      = 0;
            int record       = 0;
            List <PassengerDetail_PersonNameModel> passengerDetail_PersonNameModels = new List <PassengerDetail_PersonNameModel>();
            List <PassengerDetail_PersonNameModel> specialList = new List <PassengerDetail_PersonNameModel>();
            int cnt = 0;

            passengerDetailsRQ.PriceQuoteInfo = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQLink[lstPassenger.Count];
            foreach (var item in lstPassenger)
            {
                cnt++;
                string giverName = item.GivenName.ToUpper() + " " + AIRService.WS.Helper.VNALibrary.TitleGenerator(item.PassengerType, item.Gender);
                string surName   = item.Surname.ToUpper();

                if (item.PassengerType.ToUpper() == "ADT")
                {
                    record = 1;
                    var _nameNumber = cnt + ".1";
                    passengerDetailsRQ.PriceQuoteInfo[idxLink] = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQLink
                    {
                        hostedCarrier          = true,
                        hostedCarrierSpecified = true,
                        nameNumber             = _nameNumber,
                        record = Convert.ToString(record)
                    };
                    passengerDetail_PersonNameModels.Add(new PassengerDetail_PersonNameModel
                    {
                        PassengerType = item.PassengerType.ToUpper(),
                        NameNumber    = _nameNumber,
                        IsInfant      = false,
                        GivenName     = giverName,
                        Surname       = surName,
                        DateOfBirth   = item.DateOfBirth
                    });
                }
                if (item.PassengerType.ToUpper() == "CNN")
                {
                    record = 2;
                    var _nameNumber = cnt + ".1";
                    passengerDetailsRQ.PriceQuoteInfo[idxLink] = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQLink
                    {
                        hostedCarrier          = true,
                        hostedCarrierSpecified = true,
                        nameNumber             = _nameNumber,
                        record = Convert.ToString(record)
                    };
                    passengerDetail_PersonNameModels.Add(new PassengerDetail_PersonNameModel
                    {
                        PassengerType = item.PassengerType.ToUpper(),
                        NameNumber    = _nameNumber,
                        IsInfant      = false,
                        GivenName     = giverName,
                        Surname       = surName,
                        DateOfBirth   = item.DateOfBirth
                    });
                    specialList.Add(new PassengerDetail_PersonNameModel
                    {
                        PassengerType = item.PassengerType.ToUpper(),
                        NameNumber    = _nameNumber,
                        IsInfant      = false,
                        GivenName     = giverName,
                        Surname       = surName,
                        DateOfBirth   = item.DateOfBirth
                    });
                }
                if (item.PassengerType.ToUpper() == "INF")
                {
                    record = 3;
                    var _nameNumber = cnt + ".1";
                    passengerDetailsRQ.PriceQuoteInfo[idxLink] = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQLink
                    {
                        hostedCarrier          = true,
                        hostedCarrierSpecified = true,
                        nameNumber             = _nameNumber,
                        record = Convert.ToString(record)
                    };

                    //passengerDetail_PersonNameModels.Add(new PassengerDetail_PersonNameModel
                    //{
                    //    PassengerType = item.PassengerType.ToUpper(),
                    //    NameNumber = _nameNumber,
                    //    IsInfant = false,
                    //    GivenName = item.GivenName,
                    //    Surname = item.Surname
                    //});
                    specialList.Add(new PassengerDetail_PersonNameModel
                    {
                        PassengerType = item.PassengerType.ToUpper(),
                        NameNumber    = _nameNumber,
                        IsInfant      = true,
                        GivenName     = giverName,
                        Surname       = surName,
                        DateOfBirth   = item.DateOfBirth
                    });
                }
                idxLink++;
            }

            // SpecialReqDetails
            passengerDetailsRQ.SpecialReqDetails = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQSpecialReqDetails();
            passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQSpecialReqDetailsSpecialServiceRQ();
            passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQSpecialReqDetailsSpecialServiceRQSpecialServiceInfo();

            if (specialList.Count > 0)
            {
                passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQSpecialReqDetailsSpecialServiceRQSpecialServiceInfoService[specialList.Count];
                int idxService = 0;
                foreach (var item in specialList)
                {
                    if (item.PassengerType == "CNN")
                    {
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService] = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQSpecialReqDetailsSpecialServiceRQSpecialServiceInfoService();
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].SegmentNumber         = (idxService + 1) + ""; // // null
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].SSR_Code              = "CHLD";                // null
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].PersonName            = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQSpecialReqDetailsSpecialServiceRQSpecialServiceInfoServicePersonName();
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].PersonName.NameNumber = item.NameNumber;
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].Text                                = item.DateOfBirth.ToString("ddMMMyy").ToUpper(); // null
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].VendorPrefs                         = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQSpecialReqDetailsSpecialServiceRQSpecialServiceInfoServiceVendorPrefs();
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].VendorPrefs.Airline                 = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQSpecialReqDetailsSpecialServiceRQSpecialServiceInfoServiceVendorPrefsAirline();
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].VendorPrefs.Airline.Hosted          = true;
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].VendorPrefs.Airline.HostedSpecified = true;
                    }
                    if (item.PassengerType == "INF")
                    {
                        var name = item.Surname.ToUpper() + @"/" + item.GivenName.ToUpper() +
                                   " " + @"/" + item.DateOfBirth.ToString("ddMMMyy").ToUpper();
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService] = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQSpecialReqDetailsSpecialServiceRQSpecialServiceInfoService();
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].SegmentNumber         = (idxService + 1) + ""; // // null
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].SSR_Code              = "INFT";                // null
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].PersonName            = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQSpecialReqDetailsSpecialServiceRQSpecialServiceInfoServicePersonName();
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].PersonName.NameNumber = item.NameNumber;
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].Text                                = name; // null
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].VendorPrefs                         = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQSpecialReqDetailsSpecialServiceRQSpecialServiceInfoServiceVendorPrefs();
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].VendorPrefs.Airline                 = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQSpecialReqDetailsSpecialServiceRQSpecialServiceInfoServiceVendorPrefsAirline();
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].VendorPrefs.Airline.Hosted          = true;
                        passengerDetailsRQ.SpecialReqDetails.SpecialServiceRQ.SpecialServiceInfo.Service[idxService].VendorPrefs.Airline.HostedSpecified = true;
                    }
                    idxService++;
                }
            }
            //TravelItineraryAddInfoRQ
            passengerDetailsRQ.TravelItineraryAddInfoRQ                                               = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQTravelItineraryAddInfoRQ();
            passengerDetailsRQ.TravelItineraryAddInfoRQ.AgencyInfo                                    = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQTravelItineraryAddInfoRQAgencyInfo();
            passengerDetailsRQ.TravelItineraryAddInfoRQ.AgencyInfo.Address                            = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQTravelItineraryAddInfoRQAgencyInfoAddress();
            passengerDetailsRQ.TravelItineraryAddInfoRQ.AgencyInfo.Address.AddressLine                = "144 Doi Can";
            passengerDetailsRQ.TravelItineraryAddInfoRQ.AgencyInfo.Address.CityName                   = "Ha Noi";
            passengerDetailsRQ.TravelItineraryAddInfoRQ.AgencyInfo.Address.CountryCode                = "VN";
            passengerDetailsRQ.TravelItineraryAddInfoRQ.AgencyInfo.Address.PostalCode                 = "10000";
            passengerDetailsRQ.TravelItineraryAddInfoRQ.AgencyInfo.Address.StreetNmbr                 = "144 Doi Can";
            passengerDetailsRQ.TravelItineraryAddInfoRQ.AgencyInfo.Address.VendorPrefs                = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQTravelItineraryAddInfoRQAgencyInfoAddressVendorPrefs();
            passengerDetailsRQ.TravelItineraryAddInfoRQ.AgencyInfo.Address.VendorPrefs.Airline        = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQTravelItineraryAddInfoRQAgencyInfoAddressVendorPrefsAirline();
            passengerDetailsRQ.TravelItineraryAddInfoRQ.AgencyInfo.Address.VendorPrefs.Airline.Hosted = true;

            passengerDetailsRQ.TravelItineraryAddInfoRQ.AgencyInfo.Ticketing            = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQTravelItineraryAddInfoRQAgencyInfoTicketing();
            passengerDetailsRQ.TravelItineraryAddInfoRQ.AgencyInfo.Ticketing.TicketType = "8TL30";

            passengerDetailsRQ.TravelItineraryAddInfoRQ.CustomerInfo = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfo();
            // contact number
            passengerDetailsRQ.TravelItineraryAddInfoRQ.CustomerInfo.ContactNumbers                 = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoContactNumber[1];
            passengerDetailsRQ.TravelItineraryAddInfoRQ.CustomerInfo.ContactNumbers[0]              = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoContactNumber();
            passengerDetailsRQ.TravelItineraryAddInfoRQ.CustomerInfo.ContactNumbers[0].NameNumber   = "1.1";
            passengerDetailsRQ.TravelItineraryAddInfoRQ.CustomerInfo.ContactNumbers[0].Phone        = "0983498218";
            passengerDetailsRQ.TravelItineraryAddInfoRQ.CustomerInfo.ContactNumbers[0].PhoneUseType = "H";
            // email
            passengerDetailsRQ.TravelItineraryAddInfoRQ.CustomerInfo.Email    = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoEmail[1];
            passengerDetailsRQ.TravelItineraryAddInfoRQ.CustomerInfo.Email[0] = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoEmail
            {
                Address    = model.ContactEmail,
                NameNumber = "1.1"
            };
            ///
            int _cntInfo = 0;

            passengerDetailsRQ.TravelItineraryAddInfoRQ.CustomerInfo.PersonName = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoPersonName[passengerDetail_PersonNameModels.Count];

            foreach (var item in passengerDetail_PersonNameModels)
            {
                passengerDetailsRQ.TravelItineraryAddInfoRQ.CustomerInfo.PersonName[_cntInfo] = new WebService.WSPassengerDetailsRQ.PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoPersonName
                {
                    NameNumber      = item.NameNumber,
                    Infant          = item.IsInfant,
                    InfantSpecified = true,
                    PassengerType   = item.PassengerType.ToUpper(),
                    GivenName       = item.GivenName,
                    Surname         = item.Surname
                };
                _cntInfo++;
            }
            //
            //string xml = GetXMLFromObject(passengerDetailsRQ);
            //return xml;

            AIRService.WebService.WSPassengerDetailsRQ.PassengerDetailsPortTypeClient passengerDetailsPortTypeClient = new WebService.WSPassengerDetailsRQ.PassengerDetailsPortTypeClient();
            var data = passengerDetailsPortTypeClient.PassengerDetailsRQ(ref messageHeader, ref security, passengerDetailsRQ);

            return(data);
        }