示例#1
0
#pragma warning disable 1998
        private async Task ShowTaskOperationsAsync(IDialogContext context, QueryOperation operation)
#pragma warning restore 1998
        {
            // Get the task.
            var task = operation.GetContextObjectAs <PlanTask>();

            // Create task operations.
            var operations = new List <QueryOperation>();

            // Create in progress operation.
            if (task.PercentComplete == 0)
            {
                operations.Add(new QueryOperation
                {
                    Text          = "(In progress)",
                    Type          = OperationType.InProgress,
                    Endpoint      = operation.Endpoint,
                    ContextObject = task
                });
            }

            // Create complete operation.
            if (task.PercentComplete != 100)
            {
                operations.Add(new QueryOperation
                {
                    Text          = "(Complete)",
                    Type          = OperationType.Complete,
                    Endpoint      = operation.Endpoint,
                    ContextObject = task
                });
            }

            // Create delete operation.
            operations.Add(new QueryOperation
            {
                Text          = "(Delete)",
                Type          = OperationType.Delete,
                Endpoint      = operation.Endpoint,
                ContextObject = task
            });

            // Create up operation.
            operations.Add(new QueryOperation
            {
                Text     = "(Up)",
                Type     = OperationType.Up,
                Endpoint = operation.Endpoint
            });

            // Create other operations.
            var me = context.ConversationData.Me();

            operations.Add(new QueryOperation
            {
                Text = $"(Other {me} queries)",
                Type = OperationType.ShowOperations
            });

            // Create start over operation.
            operations.Add(new QueryOperation
            {
                Text = "(Start over)",
                Type = OperationType.StartOver
            });

            // Create prompt text.
            var promptText = $"Task \"{task.Title}\" is ";

            // Set completion status.
            switch (task.PercentComplete)
            {
            case 0:
                promptText += "not started";
                break;

            case 100:
                promptText += "completed";
                break;

            default:
                promptText += "in progress";
                break;
            }
            promptText += ". What would you like to do next?";

            // Allow user to select the operation.
            PromptDialog.Choice(context, OnTaskOperationsChoiceDialogResume, operations, promptText);
        }