private async Task <DialogTurnResult> AmountStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) { var orderLine = stepContext.GetValue <OrderLine>(ORDER); if (orderLine.ProductId == -1) { orderLine.ProductId = CardUtils.GetValueFromAction <int>((string)stepContext.Result); } var product = (await PrestashopApi.GetProductById(orderLine.ProductId)).First(); var promptOptions = new PromptOptions { Prompt = MessageFactory.Text($"How many {product.GetNameByLanguage(Languages.English)} do you want to buy?"), RetryPrompt = MessageFactory.Text("How many you want to buy? Just type a number!"), }; if (orderLine.Amount == -1) { return(await stepContext.PromptAsync(nameof(NumberPrompt <int>), promptOptions, cancellationToken)); } else { return(await stepContext.NextAsync(null, cancellationToken)); } }
static async public Task <Attachment> CreatePriceAssignationCard(Models.Cart cart, IPrestashopApi prestashopApi) { var card = CreateCardFromJson("prizeAssignationCard"); var container = card.Body[3] as AdaptiveContainer; int index = 0; foreach (OrderLine line in cart.OrderLine) { var product = (await prestashopApi.GetProductById(line.ProductId)).First(); var productTitle = new AdaptiveTextBlock { Text = "**" + product.GetNameByLanguage(Languages.English) + "**", Weight = AdaptiveTextWeight.Bolder, Wrap = true }; var columnSet = new AdaptiveColumnSet(); var column = new AdaptiveColumn { Width = AdaptiveColumnWidth.Stretch }; var reference = new AdaptiveTextBlock { Text = product.Reference, Wrap = true }; column.Items.Add(reference); var columnInput = new AdaptiveColumn { Width = AdaptiveColumnWidth.Auto }; var input = new AdaptiveNumberInput { Id = "InputCount" + index, Placeholder = "Price" }; column.Items.Add(input); columnSet.Columns.Add(column); columnSet.Columns.Add(columnInput); container.Items.Add(columnSet); index++; } return(new Attachment() { Content = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(card)), ContentType = "application/vnd.microsoft.card.adaptive" }); }
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)); }