コード例 #1
0
ファイル: HandOff.cshtml.cs プロジェクト: lulzzz/Ginseng8
        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));
        }
コード例 #2
0
ファイル: HandOff.cshtml.cs プロジェクト: lulzzz/Ginseng8
        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)
            };
        }
コード例 #3
0
        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
                    )
                );
        }