public async Task <IActionResult> OnPostAsync(HandOff handOff) { // model binding makes a bad inference about the Id // from the work item Number, so we must clear it to ensure insert handOff.Id = 0; handOff.IsForward = await GetIsForwardAsync(handOff.FromActivityId, handOff.ToActivityId); await handOff.SaveHtmlAsync(Data); await Data.TrySaveAsync(handOff); return(Redirect(ReturnUrl)); }
public async Task OnGetAsync(int id, int activityId) { WorkItem = await FindWorkItemResultAsync(id); bool isForward = await GetIsForwardAsync(WorkItem.ActivityId, activityId); HandOff = new HandOff() { WorkItemId = WorkItem.Id, FromUserId = UserId, FromActivityId = WorkItem.ActivityId, ToActivityId = activityId, IsForward = isForward // this doesn't render correctly in the form (it comes out as "value" instead of true/false for some reason) }; }
public IEnumerator <ITask> OnHandOff(HandOff handOff) { Fault fault = null; ServiceInfoType[] services = null; dir.QueryRequestType request = new dir.QueryRequestType( new ServiceInfoType(Contract.Identifier) ); dir.Query query = new dir.Query(request); query.TimeSpan = new TimeSpan(0, 0, 2); DirectoryPort.Post(query); yield return(Arbiter.Choice( query.ResponsePort, delegate(dir.QueryResponseType success) { services = success.RecordList; }, delegate(Fault f) { fault = f; } )); if (fault != null) { handOff.ResponsePort.Post(fault); yield break; } foreach (ServiceInfoType service in services) { FlexDialogOperations fwd = ServiceForwarder <FlexDialogOperations>(service.Service); FlexDialogState state = null; Get get = new Get(); get.TimeSpan = new TimeSpan(0, 0, 2); fwd.Post(get); yield return(Arbiter.Choice( get.ResponsePort, delegate(FlexDialogState success) { state = success; }, delegate(Fault f) { fault = f; } )); if (state != null && state.Title == handOff.Body.Title) { handOff.Body.Service = service.HttpServiceAlias.ToString(); DoSendNotification(handOff); handOff.ResponsePort.Post(handOff.Body); yield break; } } handOff.ResponsePort.Post( Fault.FromCodeSubcodeReason( FaultCodes.Receiver, DsspFaultCodes.UnknownEntry, "Unable to find dialog with title: " + handOff.Body.Title ) ); }