예제 #1
0
        private TravelItinerary.TravelItineraryReadRS getResponseService(string convid, string ipcc, string securitytoken, string RecLoc)
        {
            #region ====== Connection with web service ======

            //itineraryObject.Status = true;
            DateTime dt     = DateTime.UtcNow;
            string   tstamp = dt.ToString("s") + "Z";

            TravelItinerary.MessageHeader msgHeader = new TravelItinerary.MessageHeader();
            msgHeader.ConversationId = convid;          // Put ConversationId in req header

            TravelItinerary.From      from           = new TravelItinerary.From();
            TravelItinerary.PartyId   fromPartyId    = new TravelItinerary.PartyId();
            TravelItinerary.PartyId[] fromPartyIdArr = new TravelItinerary.PartyId[1];
            fromPartyId.Value = "99999";
            fromPartyIdArr[0] = fromPartyId;
            from.PartyId      = fromPartyIdArr;
            msgHeader.From    = from;

            TravelItinerary.To        to           = new TravelItinerary.To();
            TravelItinerary.PartyId   toPartyId    = new TravelItinerary.PartyId();
            TravelItinerary.PartyId[] toPartyIdArr = new TravelItinerary.PartyId[1];
            toPartyId.Value = "123123";
            toPartyIdArr[0] = toPartyId;
            to.PartyId      = toPartyIdArr;
            msgHeader.To    = to;

            msgHeader.CPAId  = ipcc;
            msgHeader.Action = "TravelItineraryReadLLSRQ";
            TravelItinerary.Service service = new TravelItinerary.Service();
            service.Value     = "Travel Itinerary Read";
            msgHeader.Service = service;


            TravelItinerary.MessageData msgData = new TravelItinerary.MessageData();
            msgData.MessageId     = "mid:[email protected]";
            msgData.Timestamp     = tstamp;
            msgHeader.MessageData = msgData;
            TravelItinerary.Security1 security = new TravelItinerary.Security1();
            security.BinarySecurityToken = securitytoken;       // Put BinarySecurityToken in req header

            //Create the request object req and the value for the IPCC in the payload of the request.
            string GEAServices = ConfigurationManager.AppSettings["ServiciosGEA"];

            TravelItinerary.TravelItineraryReadRQMessagingDetails messagingDetails = new TravelItinerary2.TravelItineraryReadRQMessagingDetails();

            messagingDetails.Transaction         = new TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransaction[1];
            messagingDetails.Transaction[0]      = new TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransaction();
            messagingDetails.Transaction[0].Code = TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransactionCode.PNR;


            //for (int i = 0; i < GEAServices.Split('|').Length; i++)
            //{
            //    if (GEAServices.Split('|')[i] == "HOT")
            //    {
            //        messagingDetails.Transaction[i] = new TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransaction();
            //        messagingDetails.Transaction[i].Code = TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransactionCode.HOT;
            //    }
            //    else if (GEAServices.Split('|')[i] == "CAR")
            //    {
            //        messagingDetails.Transaction[i] = new TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransaction();
            //        messagingDetails.Transaction[i].Code = TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransactionCode.CAR;
            //    }
            //}

            TravelItinerary.TravelItineraryReadRQ req = new TravelItinerary.TravelItineraryReadRQ();
            //TravelItinerary.OTA_TravelItineraryReadRQPOS pos = new TravelItinerary.OTA_TravelItineraryReadRQPOS();
            //TravelItinerary.OTA_TravelItineraryReadRQPOSSource source = new TravelItinerary.OTA_TravelItineraryReadRQPOSSource();
            //source.PseudoCityCode = ipcc;
            //pos.Source = source;
            //req.POS = pos;
            req.TimeStamp          = DateTime.Now;
            req.TimeStampSpecified = true;
            req.MessagingDetails   = messagingDetails;
            req.Version            = "2.2.0"; // Specify the service version

            //TravelItinerary.OTA_TravelItineraryReadRQTPA_Extensions tpa = new TravelItinerary.OTA_TravelItineraryReadRQTPA_Extensions();
            //TravelItinerary.OTA_TravelItineraryReadRQTPA_ExtensionsMessagingDetails msj = new TravelItinerary.OTA_TravelItineraryReadRQTPA_ExtensionsMessagingDetails();
            //TravelItinerary.OTA_TravelItineraryReadRQTPA_ExtensionsMessagingDetailsMDRSubset code = new TravelItinerary.OTA_TravelItineraryReadRQTPA_ExtensionsMessagingDetailsMDRSubset();

            //code.Code = "PN43";
            //msj.MDRSubset = code;
            //tpa.MessagingDetails = msj;
            //req.TPA_Extensions = tpa;

            TravelItinerary.TravelItineraryReadRQUniqueID uniqueID = new TravelItinerary.TravelItineraryReadRQUniqueID();
            uniqueID.ID  = RecLoc;
            req.UniqueID = uniqueID;


            TravelItinerary.TravelItineraryReadService serviceObj = new TravelItinerary.TravelItineraryReadService();
            serviceObj.MessageHeaderValue = msgHeader;
            serviceObj.Security           = security;

            //System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(req.GetType());
            //System.IO.StreamWriter file = new System.IO.StreamWriter(@"c:\RESP\otatravelItineraryHotelReq " + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".xml");
            //writer.Serialize(file, req);
            //file.Close();


            //Call the service and assign the response object.
            TravelItinerary.TravelItineraryReadRS resp = serviceObj.TravelItineraryReadRQ(req);         // Send the request.

            //Retrieve data from the resp object, such as flight number and airline code, and display
            //it on standard output. the client can retrieve other data from the response the same wayi.

            #endregion
            return(resp);
        }
예제 #2
0
        public List <OTATravelItineraryObjectHotel> getHotelValues(string convid, string ipcc, string securitytoken, string RecLoc, string sixReceived, string agente, string mail, string RFC, List <string> lstcommission, string PNRDataHotel, string PNRDataCar)
        {
            List <OTATravelItineraryObjectHotel> myObect         = new List <OTATravelItineraryObjectHotel>();
            OTATravelItineraryObjectHotel        itineraryObject = null;
            string errorMessage = string.Empty;

            try
            {
                #region ====== Connection with web service ======

                //itineraryObject.Status = true;
                DateTime dt     = DateTime.UtcNow;
                string   tstamp = dt.ToString("s") + "Z";

                TravelItinerary.MessageHeader msgHeader = new TravelItinerary.MessageHeader();
                msgHeader.ConversationId = convid;              // Put ConversationId in req header

                TravelItinerary.From      from           = new TravelItinerary.From();
                TravelItinerary.PartyId   fromPartyId    = new TravelItinerary.PartyId();
                TravelItinerary.PartyId[] fromPartyIdArr = new TravelItinerary.PartyId[1];
                fromPartyId.Value = "99999";
                fromPartyIdArr[0] = fromPartyId;
                from.PartyId      = fromPartyIdArr;
                msgHeader.From    = from;

                TravelItinerary.To        to           = new TravelItinerary.To();
                TravelItinerary.PartyId   toPartyId    = new TravelItinerary.PartyId();
                TravelItinerary.PartyId[] toPartyIdArr = new TravelItinerary.PartyId[1];
                toPartyId.Value = "123123";
                toPartyIdArr[0] = toPartyId;
                to.PartyId      = toPartyIdArr;
                msgHeader.To    = to;

                msgHeader.CPAId  = ipcc;
                msgHeader.Action = "TravelItineraryReadLLSRQ";
                TravelItinerary.Service service = new TravelItinerary.Service();
                service.Value     = "Travel Itinerary Read";
                msgHeader.Service = service;


                TravelItinerary.MessageData msgData = new TravelItinerary.MessageData();
                msgData.MessageId     = "mid:[email protected]";
                msgData.Timestamp     = tstamp;
                msgHeader.MessageData = msgData;
                TravelItinerary.Security1 security = new TravelItinerary.Security1();
                security.BinarySecurityToken = securitytoken;   // Put BinarySecurityToken in req header

                //Create the request object req and the value for the IPCC in the payload of the request.
                string GEAServices = ConfigurationManager.AppSettings["ServiciosGEA"];

                TravelItinerary.TravelItineraryReadRQMessagingDetails messagingDetails = new TravelItinerary2.TravelItineraryReadRQMessagingDetails();

                messagingDetails.Transaction         = new TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransaction[1];
                messagingDetails.Transaction[0]      = new TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransaction();
                messagingDetails.Transaction[0].Code = TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransactionCode.PNR;


                //for (int i = 0; i < GEAServices.Split('|').Length; i++)
                //{
                //    if (GEAServices.Split('|')[i] == "HOT")
                //    {
                //        messagingDetails.Transaction[i] = new TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransaction();
                //        messagingDetails.Transaction[i].Code = TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransactionCode.HOT;
                //    }
                //    else if (GEAServices.Split('|')[i] == "CAR")
                //    {
                //        messagingDetails.Transaction[i] = new TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransaction();
                //        messagingDetails.Transaction[i].Code = TravelItinerary2.TravelItineraryReadRQMessagingDetailsTransactionCode.CAR;
                //    }
                //}

                TravelItinerary.TravelItineraryReadRQ req = new TravelItinerary.TravelItineraryReadRQ();
                //TravelItinerary.OTA_TravelItineraryReadRQPOS pos = new TravelItinerary.OTA_TravelItineraryReadRQPOS();
                //TravelItinerary.OTA_TravelItineraryReadRQPOSSource source = new TravelItinerary.OTA_TravelItineraryReadRQPOSSource();
                //source.PseudoCityCode = ipcc;
                //pos.Source = source;
                //req.POS = pos;
                req.TimeStamp          = DateTime.Now;
                req.TimeStampSpecified = true;
                req.MessagingDetails   = messagingDetails;
                req.Version            = "2.2.0"; // Specify the service version

                //TravelItinerary.OTA_TravelItineraryReadRQTPA_Extensions tpa = new TravelItinerary.OTA_TravelItineraryReadRQTPA_Extensions();
                //TravelItinerary.OTA_TravelItineraryReadRQTPA_ExtensionsMessagingDetails msj = new TravelItinerary.OTA_TravelItineraryReadRQTPA_ExtensionsMessagingDetails();
                //TravelItinerary.OTA_TravelItineraryReadRQTPA_ExtensionsMessagingDetailsMDRSubset code = new TravelItinerary.OTA_TravelItineraryReadRQTPA_ExtensionsMessagingDetailsMDRSubset();

                //code.Code = "PN43";
                //msj.MDRSubset = code;
                //tpa.MessagingDetails = msj;
                //req.TPA_Extensions = tpa;

                TravelItinerary.TravelItineraryReadRQUniqueID uniqueID = new TravelItinerary.TravelItineraryReadRQUniqueID();
                uniqueID.ID  = RecLoc;
                req.UniqueID = uniqueID;


                TravelItinerary.TravelItineraryReadService serviceObj = new TravelItinerary.TravelItineraryReadService();
                serviceObj.MessageHeaderValue = msgHeader;
                serviceObj.Security           = security;

                //System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(req.GetType());
                //System.IO.StreamWriter file = new System.IO.StreamWriter(@"c:\RESP\otatravelItineraryHotelReq " + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".xml");
                //writer.Serialize(file, req);
                //file.Close();


                //Call the service and assign the response object.
                TravelItinerary.TravelItineraryReadRS resp = serviceObj.TravelItineraryReadRQ(req);             // Send the request.

                XmlDocument doc = Serialize(resp);
                doc = Serialize(req);

                //Retrieve data from the resp object, such as flight number and airline code, and display
                //it on standard output. the client can retrieve other data from the response the same wayi.

                #endregion

                string typeCar     = string.Empty;;
                string codeCityIti = string.Empty;
                string codeCityDB  = string.Empty;
                chainCodeCancel = string.Empty;
                TimeSpan ts = new TimeSpan();

                //////////////////////////////////////////////////////////////
                //Validacion de errores en al conexion del web service//
                //////////////////////////////////////////////////////////////
                if (resp.ApplicationResults.Error == null)
                {
                    //////////////////////////////////////////////////////////////
                    //Se obtine infomacion del PNR//
                    //////////////////////////////////////////////////////////////

                    if (resp.TravelItinerary.ItineraryInfo.ReservationItems != null)
                    {
                        for (int i = 0; i < resp.TravelItinerary.ItineraryInfo.ReservationItems.Length; i++)
                        {
                            itineraryObject = new OTATravelItineraryObjectHotel();
                            itineraryObject.CancelNumberList = new List <string>();
                            getNumCancelRecClose(resp, itineraryObject, string.IsNullOrEmpty(resp.TravelItinerary.ItineraryRef.ID) ? RecLoc : resp.TravelItinerary.ItineraryRef.ID);

                            string commision = string.Empty;

                            if (lstcommission.Count > 1)
                            {
                                commision = lstcommission[i];
                            }
                            else
                            {
                                commision = "10";
                            }

                            itineraryObject.Prov_Direct_Pay = true;

                            string dk = string.Empty;

                            dk = resp.TravelItinerary.ItineraryRef.CustomerIdentifier.ToUpper();

                            string phone = string.Empty;

                            foreach (TravelItinerary2.TravelItineraryReadRSTravelItineraryCustomerInfoContactNumber contactNumber in resp.TravelItinerary.CustomerInfo.ContactNumbers)
                            {
                                if (!string.IsNullOrEmpty(phone))
                                {
                                    phone = string.Concat(phone, ", ");
                                }
                                phone = string.Concat(phone, contactNumber.Phone);
                            }

                            string passengerType = string.Empty;
                            int    passengerNum  = 0;

                            for (int cusNum = 0; cusNum < resp.TravelItinerary.CustomerInfo.PersonName.Length; cusNum++)
                            {
                                if (!string.IsNullOrEmpty(resp.TravelItinerary.CustomerInfo.PersonName[cusNum].PassengerType))
                                {
                                    if (resp.TravelItinerary.CustomerInfo.PersonName[cusNum].PassengerType.Length > 0)
                                    {
                                        passengerType = "|" + resp.TravelItinerary.CustomerInfo.PersonName[cusNum].PassengerType;
                                        passengerNum  = cusNum + 1;
                                    }
                                    else
                                    {
                                        passengerType = string.Empty; //numero de pasajeros
                                    }
                                }
                                else
                                {
                                    passengerType = string.Empty;
                                }
                            }

                            string passengerName = string.Empty;
                            string title         = string.Empty;

                            divide = resp.TravelItinerary.CustomerInfo.PersonName[0].GivenName.Split("".ToCharArray());

                            if (divide.Length > 1)
                            {
                                passengerName = resp.TravelItinerary.CustomerInfo.PersonName[0].GivenName.Substring(0, resp.TravelItinerary.CustomerInfo.PersonName[0].GivenName.Length - 3);
                                title         = divide[divide.Length - 1];
                            }
                            else
                            {
                                passengerName = resp.TravelItinerary.CustomerInfo.PersonName[0].GivenName;
                                title         = string.Empty;
                            }

                            string passengerSurname = string.Empty;

                            passengerSurname = resp.TravelItinerary.CustomerInfo.PersonName[0].Surname;

                            if (resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Hotel != null && string.IsNullOrEmpty(PNRDataHotel))
                            {
                                if (resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Hotel.Status == "HK" || resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Hotel.Status == "GK")
                                {
                                    itineraryObject = GetHotel(resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Hotel, commision, dk, phone, RFC, agente, mail,
                                                               sixReceived, passengerType, passengerNum, passengerName, title, passengerSurname, itineraryObject.Status, itineraryObject.CancelNumberList);
                                    itineraryObject.Record = string.IsNullOrEmpty(resp.TravelItinerary.ItineraryRef.ID) ? string.Concat(RecLoc, "|HOTEL") : string.Concat(resp.TravelItinerary.ItineraryRef.ID, "|HOTEL");
                                }
                                else
                                {
                                    errorMessage = string.Concat("Error MyCTS: Segmento ", resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Hotel.SegmentNumber, " en status ", resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Hotel.Status);
                                }
                            }
                            else if (resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Vehicle != null && string.IsNullOrEmpty(PNRDataCar))
                            {
                                if (resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Vehicle.Status == "HK" || resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Vehicle.Status == "GK")
                                {
                                    itineraryObject = GetCars(resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Vehicle, commision, dk, phone, RFC, agente, mail,
                                                              sixReceived, passengerType, passengerNum, passengerName, title, passengerSurname, itineraryObject.Status, itineraryObject.CancelNumberList);
                                    itineraryObject.Record = string.IsNullOrEmpty(resp.TravelItinerary.ItineraryRef.ID) ? string.Concat(RecLoc, "|CAR") : string.Concat(resp.TravelItinerary.ItineraryRef.ID, "|CAR");
                                }
                                else
                                {
                                    errorMessage = string.Concat("Error MyCTS: Segmento ", resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Vehicle.SegmentNumber, " en status ", resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Vehicle.Status);
                                }
                            }
                            else
                            {
                                if (itineraryObject != null)
                                {
                                    if (itineraryObject.CancelNumberList.Count < 0)                     //cuando el records es nuevo y no tiene cancelaciones
                                    {
                                        if (!string.IsNullOrEmpty(itineraryObject.Confirmation_Number)) //valida si la clave de confirmacion del hotel no fue asignada al segmento

                                        {
                                            myObect.Add(itineraryObject);
                                        }
                                    }
                                    else
                                    if (myObect.Count == 0)    //itinerario basio solo para leera el estatus y los numeros de cancelacion
                                    {
                                        if (!string.IsNullOrEmpty(itineraryObject.Confirmation_Number))
                                        {
                                            myObect.Add(itineraryObject);
                                        }
                                    }
                                }
                            }

                            if (resp.TravelItinerary.ItineraryInfo.ReservationItems.Length > 0 &&//cuando el record tiene cancelaciones
                                resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Hotel != null)
                            {
                                if (!string.IsNullOrEmpty(itineraryObject.Confirmation_Number))
                                {
                                    myObect.Add(itineraryObject);
                                }
                            }
                            else if (resp.TravelItinerary.ItineraryInfo.ReservationItems.Length > 0 &&//cuando el record tiene cancelaciones
                                     resp.TravelItinerary.ItineraryInfo.ReservationItems[i].Vehicle != null)
                            {
                                if (!string.IsNullOrEmpty(itineraryObject.Confirmation_Number))
                                {
                                    myObect.Add(itineraryObject);
                                }
                            }
                        }
                    }
                }
                else
                {
                    foreach (TravelItinerary2.ProblemInformation error in resp.ApplicationResults.Error)
                    {
                        foreach (TravelItinerary2.SystemSpecificResults systemSpecificResults in error.SystemSpecificResults)
                        {
                            foreach (TravelItinerary2.MessageCondition message in systemSpecificResults.Message)
                            {
                                if (!string.IsNullOrEmpty(errorMessage))
                                {
                                    errorMessage = string.Concat(errorMessage, ", ");
                                }
                                else
                                {
                                    errorMessage = "Error MyCTS: ";
                                }
                                errorMessage = string.Concat(errorMessage, message.Value);
                            }
                        }
                    }
                }
                if (!string.IsNullOrEmpty(errorMessage))
                {
                    itineraryObject = new OTATravelItineraryObjectHotel();
                    itineraryObject.errorWSSabre = errorMessage;
                    myObect.Add(itineraryObject);
                }
            }
            catch (Exception e)
            {
                itineraryObject = new OTATravelItineraryObjectHotel();

                itineraryObject.errorWSSabre = string.Concat("Error MyCTS: ", e.ToString());
                myObect.Add(itineraryObject);
            }

            return(myObect);
        }