private async Task <DialogTurnResult> AskForActionStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) { Type type = stepContext.Options.GetType(); if (type == typeof(UserProfile)) { var user = (UserProfile)stepContext.Options; stepContext.Values[FROMNOTIFICATION] = true; var prestashopUser = (await PrestashopApi.GetCustomerById(user.PrestashopId.Value)).First(); string confirmMsg = $"{prestashopUser.GetFullName()} has an order pending for confirmation. Would you like to" + $"confirm it now?"; var promptOptions = new PromptOptions { Prompt = MessageFactory.Text(confirmMsg), RetryPrompt = MessageFactory.Text(confirmMsg + "(Yes / No)") }; return(await stepContext.PromptAsync(nameof(ConfirmPrompt), promptOptions, cancellationToken)); } else { stepContext.Values[FROMNOTIFICATION] = false; return(await stepContext.NextAsync(null, cancellationToken)); } }
public async Task RequestValidationAsync(string id) { var superusers = await UserController.GetUsersByPermissionLevelAsync(PermissionLevels.Superuser); var requestingUser = await UserController.GetUserByBotIdAsync(id); var prestashopUser = (await PrestashopApi.GetCustomerById(requestingUser.PrestashopId.Value)).First(); // We declare a local function to use as BotCallBackHandler in the ContinueConversationAsync Method async Task botCallBack(ITurnContext turnContext, CancellationToken cancellationToken) => await turnContext.SendActivityAsync($"User {prestashopUser.GetFullName()} would like to get his account validated."); foreach (Models.UserProfile superuser in superusers) { var conversationReference = _conversationReferences[superuser.BotUserId]; await((BotAdapter)_adapter).ContinueConversationAsync(_appId, conversationReference, botCallBack, default); } }
public async Task <Attachment> ToAdaptiveCard(IPrestashopApi prestashopApi) { var card = CardUtils.CreateCardFromJson("confirmOrderCard"); var user = (await prestashopApi.GetCustomerById(User.PrestashopId.Value)).First(); //Ara hem convertit el JSON a un AdaptiveCard i editarem els fragments que ens interessen. //Primer editem el FactSet (informació de l'usuari que sortirà a la fitxa). var containerFact = (card.Body[1] as AdaptiveContainer); var factSet = (containerFact.Items[1] as AdaptiveFactSet); factSet.Facts.Add(new AdaptiveFact("Ordered by:", user.GetFullName())); factSet.Facts.Add(new AdaptiveFact("Company:", user.Company)); //Ara editarem la informació que sortirà dels productes var containerProducts = (card.Body[3] as AdaptiveContainer); foreach (OrderLine orderLine in OrderLine) { AdaptiveColumnSet columns = new AdaptiveColumnSet(); AdaptiveColumn productColumn = new AdaptiveColumn(); var product = (await prestashopApi.GetProductById(orderLine.ProductId)).First(); AdaptiveTextBlock productText = new AdaptiveTextBlock(product.GetNameByLanguage(Languages.English)); productText.Wrap = true; productColumn.Width = "stretch"; productColumn.Items.Add(productText); columns.Columns.Add(productColumn); AdaptiveColumn amountColumn = new AdaptiveColumn(); AdaptiveTextBlock amount = new AdaptiveTextBlock(orderLine.Amount.ToString()); amount.Wrap = true; amountColumn.Width = "auto"; amountColumn.Items.Add(amount); columns.Columns.Add(amountColumn); containerProducts.Items.Add(columns); } var attachment = new Attachment() { Content = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(card)), ContentType = "application/vnd.microsoft.card.adaptive" }; return(attachment); }
public static async Task <Order> BuildOrderAsync(Models.Cart cart, IPrestashopApi prestashopApi) { var prestaCart = await CartToPost.BuildCartAsync(cart, prestashopApi); var postedCart = await prestashopApi.PostCart(prestaCart); var customer = (await prestashopApi.GetCustomerById(cart.User.PrestashopId.Value)).First(); var customerAddresses = await prestashopApi.GetAddressByCustomer(cart.User.PrestashopId.Value); var customerAddress = customerAddresses.First(); var order = new PostOrder(customer, postedCart.Cart, customerAddress); double totalPrice = 0; foreach (CartRow row in prestaCart.Cart.Rows.Rows) { var product = (await prestashopApi.GetProductById(row.ProductId)).First(); totalPrice += product.Price; order.OrderRows.Rows.Add( new OrderRow(product, row.Quantity) ); } order.TotalProducts = totalPrice; order.TotalProductsWithTax = totalPrice * 1.21; order.TotalPaidTaxExcluded = totalPrice; order.TotalPaidTaxIncluded = totalPrice * 1.21; order.TotalPaid = totalPrice * 1.21; var prestaOrder = new OrderToPost { Order = order }; System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(OrderToPost)); var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "//SerializationOverview.xml"; System.IO.FileStream file = System.IO.File.Create(path); writer.Serialize(file, prestaOrder); file.Close(); var postedOrder = await prestashopApi.PostOrder(prestaOrder); return(await Task.FromResult(postedOrder.Order)); }
async public static Task <RequestedInfo> BuildRequestedInfoAsync(Models.Cart cart, IPrestashopApi prestashopApi) { var customer = (await prestashopApi.GetCustomerById(cart.User.Id)).First(); var productString = ""; foreach (OrderLine line in cart.OrderLine) { var product = (await prestashopApi.GetProductById(line.ProductId)).First(); productString += "- " + product.GetNameByLanguage(Languages.English) + "\n\n"; } return(new RequestedInfo(cart.Id, customer.Company, productString)); }
public static async Task <CartToPost> BuildCartAsync(Models.Cart cart, IPrestashopApi prestashopApi) { var customer = (await prestashopApi.GetCustomerById(cart.User.PrestashopId.Value)).First(); var prestaCart = new CartToPost() { Cart = new PostCart(customer) }; var rowCollection = new CartRowCollection(); foreach (Models.OrderLine line in cart.OrderLine) { var row = new CartRow(line.ProductId, line.Amount); rowCollection.Rows.Add(row); } prestaCart.Cart.Rows = rowCollection; return(await Task.FromResult(prestaCart)); }