public async Task <DialogTurnResult> AnotherProductOrNotStepAsync(WaterfallStepContext stepContext,
                                                                          CancellationToken cancellationToken)
        {
            var state = await Accessors.CustomerDataState.GetAsync(stepContext.Context,
                                                                   cancellationToken : cancellationToken);

            var salesOrderLine = new SalesOrderLine
            {
                Item      = state.TempItem,
                Quantity  = state.TempQuantity,
                UnitPrice = state.TempItem.UnitPrice
            };

            if (state.TempSalesOrderLines != null)
            {
                state.TempSalesOrderLines.Add(salesOrderLine);
            }
            else
            {
                state.TempSalesOrderLines = new List <SalesOrderLine> {
                    salesOrderLine
                };
            }

            await Accessors.CustomerDataState.SetAsync(stepContext.Context, state, cancellationToken);

            return(await stepContext.PromptAsync(AnotherProductPrompt, new PromptOptions
            {
                Prompt = await Chatter.GetActivityAsync(stepContext.Context, StaticTexts.AnotherProductText),
                RetryPrompt = await Chatter.GetActivityAsync(stepContext.Context, StaticTexts.AnotherProductText)
            }, cancellationToken));
        }
示例#2
0
        public async Task <DialogTurnResult> LanguageChooseStepAsync(WaterfallStepContext stepContext,
                                                                     CancellationToken cancellationToken)
        {
            var choices = await Translator.GetLanguages();

            return(await stepContext.PromptAsync(LanguagePrompt, new PromptOptions
            {
                Choices = ChoiceFactory.ToChoices(choices),
                Prompt = await Chatter.GetActivityAsync(stepContext.Context, StaticTexts.ChooseLanguageText),
                RetryPrompt = await Chatter.GetActivityAsync(stepContext.Context, StaticTexts.ChooseLanguageAgainText)
            }, cancellationToken));
        }
示例#3
0
        public async Task <DialogTurnResult> ConfirmSalesOrderStepAsync(WaterfallStepContext stepContext,
                                                                        CancellationToken cancellationToken)
        {
            var state = await Accessors.CustomerDataState.GetAsync(stepContext.Context,
                                                                   cancellationToken : cancellationToken);

            var attachment = StaticTexts.CreateSalesOrderAttachment(state.TempSalesOrderLines);
            await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(attachment), cancellationToken);

            await Chatter.SendMessageAsync(stepContext.Context, StaticTexts.TempOrderViewedText);

            return(await stepContext.PromptAsync(ConfirmSalesOrderPrompt, new PromptOptions
            {
                Prompt = await Chatter.GetActivityAsync(stepContext.Context, StaticTexts.ConfirmSalesOrderText),
                RetryPrompt = await Chatter.GetActivityAsync(stepContext.Context, StaticTexts.ConfirmSalesOrderText)
            }, cancellationToken));
        }
示例#4
0
        public async Task <DialogTurnResult> ChooseItemCategoryStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            var state = await Accessors.CustomerDataState.GetAsync(stepContext.Context, cancellationToken : cancellationToken);

            var itemCategories = await Client.GetItemCategories();

            if (!itemCategories.Any())
            {
                await Chatter.SendMessageAsync(stepContext.Context, StaticTexts.NoItemCategoriesExistText);

                return(await stepContext.ReplaceDialogAsync(Name, cancellationToken : cancellationToken));
            }

            state.ItemCategories = itemCategories;
            await Accessors.CustomerDataState.SetAsync(stepContext.Context, state, cancellationToken);

            var converter = new Converter <ItemCategoryDto, string>(input => input.DisplayName);

            return(await stepContext.PromptAsync(ItemCategoryPrompt, new PromptOptions
            {
                Prompt = await Chatter.GetActivityAsync(stepContext.Context, StaticTexts.ChooseItemCategoryText),
                RetryPrompt = await Chatter.GetActivityAsync(stepContext.Context, StaticTexts.ChooseItemCategoryAgainText),
                Choices = ChoiceFactory.ToChoices(itemCategories.ConvertAll(converter))
            }, cancellationToken));
        }
示例#5
0
        public async Task <DialogTurnResult> CustomerIdStepAsync(WaterfallStepContext stepContext,
                                                                 CancellationToken cancellationToken)
        {
            var state = await Accessors.CustomerDataState.GetAsync(stepContext.Context,
                                                                   cancellationToken : cancellationToken);

            if (state.Customer != null)
            {
                return(await stepContext.ContinueDialogAsync(cancellationToken));
            }
            await Chatter.SendMessageAsync(stepContext.Context, StaticTexts.WelcomeOrderText);

            return(await stepContext.PromptAsync(CustomerIdPrompt, new PromptOptions
            {
                Prompt = await Chatter.GetActivityAsync(stepContext.Context, StaticTexts.CustomerIdText),
                RetryPrompt = await Chatter.GetActivityAsync(stepContext.Context, StaticTexts.CustomerNotFoundText)
            }, cancellationToken));
        }
示例#6
0
        public async Task <DialogTurnResult> ChooseOrderStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            var state = await Accessors.CustomerDataState.GetAsync(stepContext.Context, null, cancellationToken);

            if (state.SalesOrders == null)
            {
                var orders = await Client.GetSalesOrdersOfCustomer(state.Customer.Number);

                state.SalesOrders = ConvertDictionary(orders);
                var attachments = new List <Attachment>();
                foreach (var order in orders)
                {
                    attachments.Add(StaticTexts.CreatePostedSalesOrderAttachment(order.Key, order.Value, state.Customer));
                }

                await Accessors.CustomerDataState.SetAsync(stepContext.Context, state, cancellationToken);

                await stepContext.Context.SendActivityAsync(MessageFactory.Carousel(attachments), cancellationToken);

                await Chatter.SendMessageAsync(stepContext.Context, StaticTexts.ViewedOrdersText);
            }
            return(await stepContext.PromptAsync(OrdersPrompt, new PromptOptions
            {
                Prompt = await Chatter.GetActivityAsync(stepContext.Context, StaticTexts.EnterOrderNumberText),
                RetryPrompt = await Chatter.GetActivityAsync(stepContext.Context, StaticTexts.EnterOrderNumberAgainText)
            }, cancellationToken : cancellationToken));
        }