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