/// <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); } }
/// <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) } } } }); }
/// <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 }, }); }
/// <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) }); }