/// <summary>
        /// Runs the activity asynchronously.
        /// </summary>
        /// <param name="sharedContext">The shared context.</param>
        /// <returns>
        /// Next activity to be run or <c>null</c> if last in flow.
        /// </returns>
        public async Task <IActivity> RunAsync(SharedContext sharedContext)
        {
            var security = await this.sessionPool.TakeSessionAsync(sharedContext.ConversationId);

            var service = this.soapServiceFactory.CreatePassengerDetailsService(sharedContext.ConversationId, security);
            IPassengerDetailsActivityData data    = sharedContext.GetResult <IPassengerDetailsActivityData>(InputDataSharedContextKey);
            PassengerDetailsRQ            request = this.CreateRequest(data);

            sharedContext.AddSerializedResultXML(RequestXmlSharedContextKey, request);
            try
            {
                PassengerDetailsRS response = service.PassengerDetailsRQ(request);
                sharedContext.AddResult(SharedContextKey, response);
                sharedContext.AddSerializedResultXML(ResponseXmlSharedContextKey, response);
                sharedContext.AddResult(TravelItineraryReadActivity.TravelItineraryRefContextKey, response.ItineraryRef.ID);
                return(new TravelItineraryReadActivity(this.soapServiceFactory, this.sessionPool));
            }
            catch (Exception ex)
            {
                sharedContext.AddResult(CommonConstants.ExceptionSharedContextKey, ex);
                sharedContext.IsFaulty = true;
                this.sessionPool.ReleaseSession(sharedContext.ConversationId);
                return(null);
            }
        }
Beispiel #2
0
 /// <summary>
 /// Creates the request.
 /// </summary>
 /// <param name="data">The data.</param>
 /// <returns>
 /// The PassengerDetails request.
 /// </returns>
 private PassengerDetailsRQ CreateRequest(IPassengerDetailsActivityData data)
 {
     return(new PassengerDetailsRQ
     {
         IgnoreOnError2 = true,
         version = "3.2.0",
         TravelItineraryAddInfoRQ = this.CreateTravelItineraryAddInfo(data)
     });
 }
 /// <summary>
 /// Creates the request.
 /// </summary>
 /// <param name="data">The data.</param>
 /// <returns>
 /// The PassengerDetails request.
 /// </returns>
 private PassengerDetailsRQ CreateRequest(IPassengerDetailsActivityData data)
 {
     return(new PassengerDetailsRQ
     {
         IgnoreOnError2 = true,
         version = "3.2.0",
         TravelItineraryAddInfoRQ = this.CreateTravelItineraryAddInfo(data),
         PostProcessing = new PassengerDetailsRQPostProcessing
         {
             EndTransactionRQ = new PassengerDetailsRQPostProcessingEndTransactionRQ
             {
                 EndTransaction = new PassengerDetailsRQPostProcessingEndTransactionRQEndTransaction {
                     Ind = "true"
                 },
                 Source = new PassengerDetailsRQPostProcessingEndTransactionRQSource
                 {
                     ReceivedFrom = string.Format("{0} {1}", data.GivenName, data.Surname)
                 }
             }
         }
     });
 }
Beispiel #4
0
 /// <summary>
 /// Creates the model containing contact numbers.
 /// </summary>
 /// <param name="data">The data.</param>
 /// <returns>
 /// The model.
 /// </returns>
 private PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoContactNumber[] CreateContactNumbers(IPassengerDetailsActivityData data)
 {
     return(new PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoContactNumber[]
     {
         new PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoContactNumber
         {
             LocationCode = data.Phone1LocationCode,
             NameNumber = "1.1",
             Phone = data.Phone1,
             PhoneUseType = data.Phone1UseType
         },
         new PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoContactNumber
         {
             LocationCode = data.Phone2LocationCode,
             NameNumber = "1.1",
             Phone = data.Phone2,
             PhoneUseType = data.Phone2UseType
         },
     });
 }
Beispiel #5
0
 /// <summary>
 /// Creates the TravelItineraryAddInfo request model.
 /// </summary>
 /// <param name="data">The data.</param>
 /// <returns>
 /// The model.
 /// </returns>
 private PassengerDetailsRQTravelItineraryAddInfoRQ CreateTravelItineraryAddInfo(IPassengerDetailsActivityData data)
 {
     return(new PassengerDetailsRQTravelItineraryAddInfoRQ
     {
         CustomerInfo = new PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfo
         {
             ContactNumbers = this.CreateContactNumbers(data),
             Email = new PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoEmail[]
             {
                 new PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoEmail
                 {
                     NameNumber = "1.1",
                     Address = data.PassengerEmail,
                 }
             },
             PersonName = new PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoPersonName[]
             {
                 new PassengerDetailsRQTravelItineraryAddInfoRQCustomerInfoPersonName
                 {
                     NameNumber = "1.1",
                     GivenName = data.GivenName,
                     Surname = data.Surname
                 }
             }
         }
     });
 }
 /// <summary>
 /// Creates the model containing agency information.
 /// </summary>
 /// <param name="data">The data.</param>
 /// <returns>
 /// The model.
 /// </returns>
 private PassengerDetailsRQTravelItineraryAddInfoRQAgencyInfo CreateAgencyInfo(IPassengerDetailsActivityData data)
 {
     return(new PassengerDetailsRQTravelItineraryAddInfoRQAgencyInfo
     {
         Address = new PassengerDetailsRQTravelItineraryAddInfoRQAgencyInfoAddress
         {
             AddressLine = data.AgencyAddressLine,
             CityName = data.AgencyCityName,
             CountryCode = data.AgencyCountryCode,
             PostalCode = data.AgencyPostalCode,
             StreetNmbr = data.AgencyStreetNumber,
             StateCountyProv = new PassengerDetailsRQTravelItineraryAddInfoRQAgencyInfoAddressStateCountyProv
             {
                 StateCode = data.AgencyStateCode
             }
         },
         Ticketing = new PassengerDetailsRQTravelItineraryAddInfoRQAgencyInfoTicketing
         {
             TicketType = data.AgencyTicketType
         }
     });
 }
 /// <summary>
 /// Creates the TravelItineraryAddInfo request model.
 /// </summary>
 /// <param name="data">The data.</param>
 /// <returns>
 /// The model.
 /// </returns>
 private PassengerDetailsRQTravelItineraryAddInfoRQ CreateTravelItineraryAddInfo(IPassengerDetailsActivityData data)
 {
     return(new PassengerDetailsRQTravelItineraryAddInfoRQ
     {
         AgencyInfo = this.CreateAgencyInfo(data)
     });
 }