/// <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);
            }
        }
예제 #2
0
        /// <summary>
        /// Creates the view model for PassengerDetails and TravelItineraryRead results.
        /// </summary>
        /// <param name="sharedContext">The shared context.</param>
        /// <returns>The view model</returns>
        public static SoapWorkflowVM CreateSoapWorkflowVM(SharedContext sharedContext)
        {
            PassengerDetailsRS passengerDetails = sharedContext.GetResult <PassengerDetailsRS>(PassengerDetailsContactActivity.SharedContextKey);
            Exception          ex = sharedContext.GetResult <Exception>(CommonConstants.ExceptionSharedContextKey);

            return(new SoapWorkflowVM
            {
                BargainFinderMaxRequestXml = sharedContext.GetResult <string>(BargainFinderMaxSoapActivity.RequestXmlSharedContextKey),
                BargainFinderMaxResponseXml = sharedContext.GetResult <string>(BargainFinderMaxSoapActivity.ResponseXmlSharedContextKey),
                PassengerDetailsContactRequestXml = sharedContext.GetResult <string>(PassengerDetailsContactActivity.RequestXmlSharedContextKey),
                PassengerDetailsContactResponseXml = sharedContext.GetResult <string>(PassengerDetailsContactActivity.ResponseXmlSharedContextKey),
                EnhancedAirBookRequestXml = sharedContext.GetResult <string>(EnhancedAirBookActivity.RequestXmlSharedContextKey),
                EnhancedAirBookResponseXml = sharedContext.GetResult <string>(EnhancedAirBookActivity.ResponseXmlSharedContextKey),
                PassengerDetailsAgencyRequestXml = sharedContext.GetResult <string>(PassengerDetailsAgencyActivity.RequestXmlSharedContextKey),
                PassengerDetailsAgencyResponseXml = sharedContext.GetResult <string>(PassengerDetailsAgencyActivity.ResponseXmlSharedContextKey),
                TravelItineraryReadRequestXml = sharedContext.GetResult <string>(TravelItineraryReadActivity.RequestXmlSharedContextKey),
                TravelItineraryReadResponseXml = sharedContext.GetResult <string>(TravelItineraryReadActivity.ResponseXmlSharedContextKey),
                ErrorMessage = ex == null ? string.Empty : ex.Message
            });
        }