예제 #1
0
        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));
            }
        }
예제 #2
0
        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"
            });
        }
예제 #3
0
파일: Cart.cs 프로젝트: fcapallera/Greta
        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);
        }
예제 #4
0
파일: Order.cs 프로젝트: fcapallera/Greta
        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));
        }
예제 #5
0
        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));
        }