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