Exemple #1
0
        public void CreateMenuDetail(AdaptiveCardDataFactory dataFactory, Guid MenuId)
        {
            var Data = JObject.FromObject(dataFactory.Request.Data);

            var name  = Data.Properties().Where(x => x.Name.Contains("name")).ToList();
            var price = Data.Properties().Where(x => x.Name.Contains("price")).ToList();

            for (int i = 0; i < name.Count(); i++)
            {
                if (name[i].Value.ToString().Equals("") || price[i].Value.ToString().Equals("0"))
                {
                    break;
                }
                else
                {
                    var menuDetail = new MenuDetail()
                    {
                        MenuDetailId = Guid.NewGuid(),
                        ProductName  = name[i].Value.ToString(),
                        Amount       = decimal.Parse(price[i].Value.ToString()),
                        MenuId       = MenuId
                    };

                    context.MenuDetail.Add(menuDetail);
                    context.SaveChanges();
                }
            }
            ;
        }
Exemple #2
0
        public MenuOrder CreateMenu(AdaptiveCardDataFactory dataFactory, string teamsId)
        {
            var Data  = JObject.FromObject(dataFactory.Request.Data);
            var store = Data.GetValue("store").ToString();

            if (store == "")
            {
                return(null);
            }
            else
            {
                //var guid = Guid.NewGuid().ToString();
                var menu = new MenuOrder
                {
                    //MenuId = Guid.Parse(menuId),
                    MenuId  = Guid.NewGuid(),
                    Store   = store,
                    TeamsId = teamsId,
                };
                context.MenuOrder.Add(menu);
                context.SaveChanges();

                return(menu);
            }
        }
Exemple #3
0
        public Attachment GetStore(AdaptiveCardDataFactory dataFactory, string orderId)
        {
            var MenuId  = dataFactory.GetCardData <StoreOrderDuetime>().MenuID;
            var Store   = dataFactory.GetCardData <StoreOrderDuetime>().StoreName;
            var DueTime = JObject.FromObject(dataFactory.Request.Data).GetValue("DueTime").ToString();

            var cardData = new CardDataModel <StoreOrderDuetime>()
            {
                Type = "GetCustomizedMenu", Value = new StoreOrderDuetime {
                    OrderID = orderId, MenuID = MenuId, StoreName = Store, DueTime = DueTime
                }
            };                                                                                                                                                                                               //包資料到Submit Action, Type是給EchoBot判斷用的字串,Value是要傳遞資料

            var card      = new AdaptiveCard(new AdaptiveSchemaVersion(1, 2));
            var actionSet = new AdaptiveActionSet()
            {
                Type = AdaptiveActionSet.TypeName, Separator = true
            };
            var TextBlockStorName = new AdaptiveTextBlock
            {
                Size   = AdaptiveTextSize.Large,
                Weight = AdaptiveTextWeight.Bolder,
                Text   = Store,
                HorizontalAlignment = AdaptiveHorizontalAlignment.Center
            };

            card.Body.Add(TextBlockStorName);

            actionSet.Actions.Add(new AdaptiveSubmitAction().SetOpenTaskModule("Join", JsonConvert.SerializeObject(cardData)));
            card.Body.Add(actionSet);
            return(new Attachment()
            {
                ContentType = AdaptiveCard.ContentType, Content = card
            });
        }
Exemple #4
0
        //此方法已被CreateStoresModule取代
        // private Attachment CreateClickStoreModule(string Jdata)
        // {
        //     var card = new AdaptiveCard(new AdaptiveSchemaVersion(1, 2));
        //
        //     var TextBlockStorName = new AdaptiveTextBlock
        //     {
        //         Size = AdaptiveTextSize.Large,
        //         Weight = AdaptiveTextWeight.Bolder,
        //         Text = "Chose Your Order",
        //         HorizontalAlignment = AdaptiveHorizontalAlignment.Center
        //     };
        //     card.Body.Add(TextBlockStorName);
        //
        //     var root = JsonConvert.DeserializeObject<Store_List>(Jdata);
        //
        //     foreach (var s in root.Stores)
        //     {
        //         var ColumnSetitem = new AdaptiveColumnSet();
        //         StoreModule(ColumnSetitem, s.Store_Name, s.Store_Url);
        //         card.Body.Add(ColumnSetitem);
        //     }
        //
        //     //選擇時間
        //     var InputTime = new AdaptiveTimeInput();
        //     InputTime.Id = "DueTime";
        //     card.Body.Add(InputTime);
        //
        //     card.Actions = new[] { TaskModuleUIConstants.AdaptiveCard }
        //            .Select(cardType => new AdaptiveSubmitAction() { Title = "Submit", Data = new AdaptiveCardTaskFetchValue<string>() { SetType = "ResultStoreCard" } })
        //             .ToList<AdaptiveAction>();
        //     return new Attachment() { ContentType = AdaptiveCard.ContentType, Content = card };
        // }

        public async Task <Attachment> CreateStoresModule(AdaptiveCardDataFactory factory, string reserve)
        {
            var address    = factory.GetCardData <string>();
            var LatLng     = GetLatLng(address);
            var storesInfo = await new WebCrawler().GetStores2(LatLng.lat, LatLng.lng);
            var cardData   = new CardDataModel <List <Store> >();

            if (reserve == null)
            {
                cardData.Type = "ResultStoreCard";
            }
            else
            {
                cardData.Type = reserve;
            }

            var card =
                NewAdaptiveCard()
                .AddElement(new AdaptiveTextBlock
            {
                Size = AdaptiveTextSize.Large, Weight = AdaptiveTextWeight.Bolder, Text = "Chose Your Order",
                HorizontalAlignment = AdaptiveHorizontalAlignment.Center
            });

            foreach (var store in storesInfo)
            {
                card
                .AddRow(new AdaptiveColumnSet()
                        .AddCol(new AdaptiveColumn()
                                .AddElement(new AdaptiveTextBlock()
                {
                    Text = store.Store_Name, Id = "StoreName"
                }))
                        .AddCol(new AdaptiveColumn()
                                .AddElement(new AdaptiveTextBlock()
                {
                    Text = store.Store_Url, Id = "Url"
                }))
                        .AddCol(new AdaptiveColumn()
                                .AddElement(new AdaptiveToggleInput()
                {
                    Id = store.Store_Name + "&&" + store.Store_Url, Title = "Confirm"
                })));
            }

            card
            .AddElement(new AdaptiveTextInput()
            {
                Id = "DueTime"
            })
            .AddActionsSet(
                NewActionsSet()
                .AddActionToSet(new AdaptiveSubmitAction().SetSubmitTaskModule("Submit", JsonConvert.SerializeObject(cardData))));

            return(new Attachment()
            {
                ContentType = AdaptiveCard.ContentType, Content = card
            });
        }
        public Attachment GetResultCustomizedModification(AdaptiveCardDataFactory dataFactory)
        {
            TeamsBuyContext context = new TeamsBuyContext();
            var             MenuId  = dataFactory.GetCardData <ModifyData>().MenuId;

            dataFactory.ModifyMenuData(MenuId);
            var menuDetails    = new MenuDetailService(context).GetMenuOrder(MenuId).ToList();
            var MenuOrderStore = new MenuService(context).GetMenuOrder(MenuId).Store;

            string[] ItemsName = new string[] { "Food Name", "Price" };
            var      card      = NewAdaptiveCard()
                                 .AddElement(new AdaptiveTextBlock()
            {
                Text = MenuOrderStore
            })
                                 .AddRow(new AdaptiveColumnSet().
                                         AddColumnsWithStrings(ItemsName)
                                         );

            for (var i = 0; i < menuDetails.Count; i++)
            {
                card.AddRow(new AdaptiveColumnSet()      //加入一列到卡片裡
                            .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                    .AddElement(new AdaptiveTextBlock()
                {
                    Text = menuDetails[i].ProductName
                })                                       //在欄位內加入餐點名稱的文字
                                    )
                            .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                    .AddElement(new AdaptiveTextBlock()
                {
                    Text = decimal.Round(menuDetails[i].Amount).ToString()
                })                                                                                                              //加入餐點價格
                                    )
                            );
            }
            return(new Attachment()
            {
                ContentType = AdaptiveCard.ContentType, Content = card
            });
        }
        public void GetChosenFoodFromMenuCreateOrderDetail(AdaptiveCardDataFactory dataFactory, string UserId)
        {
            TeamsBuyContext context      = new TeamsBuyContext();
            var             cardData     = dataFactory.GetCardData <StoreOrderDuetime>();
            var             OrderData    = dataFactory.GetOrderedFoods();
            var             SelectObject = new SelectAllDataGroup();

            SelectObject.UserID = UserId;
            var ChosenFoodFromMenu = new List <SelectData>();

            foreach (var p in OrderData)
            {
                if (p.Quantity != "0")
                {
                    ChosenFoodFromMenu.Add(new SelectData()
                    {
                        Quantity = p.Quantity, Remarks = p.Remarks, Dish_Name = p.Dish_Name, Price = p.Price
                    });
                }
            }
            new OrderService(context).CreateOrder(cardData.OrderID, dataFactory.TurnContext.Activity.ChannelId, cardData.StoreName);
            new OrderDetailService(context).CreateOrderDetail(SelectObject, ChosenFoodFromMenu, Guid.Parse(cardData.OrderID));
        }
        public Attachment GetChosenFoodFromMenuModule(AdaptiveCardDataFactory dataFactory)
        {
            TeamsBuyContext context        = new TeamsBuyContext();
            var             ChosencardData = dataFactory.GetCardData <GetChosenData>();
            var             itemsName      = new string[] { "食物名稱", "價錢", "數量", "備註", "單品總金額" }; //顯示於TaskModule上方的欄位名稱
            //var cardData = dataFactory.GetCardData<StoreOrderDuetime>();

            //新增一基本卡片,並且附加此訂單的Guid、餐廳名稱、欄位名稱等文字訊息
            var card = NewAdaptiveCard()
                       .AddElement(new AdaptiveTextBlock() //加入訂單Guid
            {
                Text   = ChosencardData.OrderID,
                Size   = AdaptiveTextSize.Small,
                Weight = AdaptiveTextWeight.Bolder,
                HorizontalAlignment = AdaptiveHorizontalAlignment.Right
            })
                       .AddElement(new AdaptiveTextBlock() //加入餐廳名稱
            {
                Text   = ChosencardData.StoreName + "訂單",
                Size   = AdaptiveTextSize.Small,
                Weight = AdaptiveTextWeight.Bolder,
                HorizontalAlignment = AdaptiveHorizontalAlignment.Right
            });

            //.AddRow(new AdaptiveColumnSet() //加入一列到卡片裡
            //        .AddColumnsWithStrings(itemsName) //加入欄位名稱到一列
            //);
            card
            .AddRow(new AdaptiveColumnSet()
            {
                Separator = true
            }
                    .AddCol(new AdaptiveColumn()
            {
                Width = "40"
            }
                            .AddElement(new AdaptiveTextBlock()
            {
                Size = (AdaptiveTextSize)2, Weight = (AdaptiveTextWeight)2, Text = "食物名稱", Color = (AdaptiveTextColor)5
            }))
                    .AddCol(new AdaptiveColumn()
            {
                Width = "10"
            }
                            .AddElement(new AdaptiveTextBlock()
            {
                Size = (AdaptiveTextSize)2, Weight = (AdaptiveTextWeight)2, Text = "價錢", Color = (AdaptiveTextColor)5
            }))
                    .AddCol(new AdaptiveColumn()
            {
                Width = "10"
            }
                            .AddElement(new AdaptiveTextBlock()
            {
                Size = (AdaptiveTextSize)2, Weight = (AdaptiveTextWeight)2, Text = "數量", Color = (AdaptiveTextColor)5
            }))
                    .AddCol(new AdaptiveColumn()
            {
                Width = "20"
            }
                            .AddElement(new AdaptiveTextBlock()
            {
                Size = (AdaptiveTextSize)2, Weight = (AdaptiveTextWeight)2, Text = "備註", Color = (AdaptiveTextColor)5
            }))
                    .AddCol(new AdaptiveColumn()
            {
                Width = "20"
            }
                            .AddElement(new AdaptiveTextBlock()
            {
                Size = (AdaptiveTextSize)2, Weight = (AdaptiveTextWeight)2, Text = "單品總金額", Color = (AdaptiveTextColor)5
            }))
                    );
            //此訂單的總花費
            decimal totalMoney = 0;

            //將SelectMenuDatagroup的資訊(菜色名稱、單價、數量、備註、總額),逐一附加到卡片內
            foreach (var p in ChosencardData.GetAllChosenDatas)
            {
                //如果沒有這道菜點餐,那就不用計算、也不用顯示
                if (p.Number.ToString() != "0")
                {
                    //獲取此餐點的總價:數量x單價
                    var totalSingleMoney = GetTotalMoney(p.Number.ToString(), p.Amount.ToString());

                    //將此餐點的總額計入此訂單的總價
                    totalMoney += totalSingleMoney;

                    //在卡片內加入一列,在一列中加入五個欄位並猜入不同資訊
                    card.AddRow(new AdaptiveColumnSet()      //加入一列到卡片裡
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                    {
                        Width = "40"
                    }
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = p.ProductName
                    })                                       //在欄位內加入餐點名稱的文字
                                        )
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                    {
                        Width = "10"
                    }
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = decimal.Round(p.Amount).ToString()
                    })                                       //加入餐點價格
                                        )
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                    {
                        Width = "10"
                    }
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = p.Number.ToString()
                    })                                       //加入餐點數量
                                        )
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                    {
                        Width = "20"
                    }

                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = p.Mark
                    })                                       //加入備註
                                        )
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                    {
                        Width = "20"
                    }
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = decimal.Round(p.TotalItemMoney).ToString()
                    })                                                                                                     //加入此餐點的總價
                                        )
                                );
                }
            }

            //顯示於TaskModule下方的文字資訊
            var timeAndTotalMoney = new string[] { "DueTime", ChosencardData.DueTime, "", "總金額:", decimal.Round(totalMoney).ToString() };

            //將其他資訊加入至卡片內
            card.AddRow(new AdaptiveColumnSet()                   //加入一列到卡片裡
                        .AddColumnsWithStrings(timeAndTotalMoney) //將文字資訊變為欄位並且加入至一列中
                        )
            .AddElement(new AdaptiveTextBlock()                   //加入訂購者名稱至卡片
            {
                Text   = ChosencardData.UserName,
                Size   = AdaptiveTextSize.Large,
                Weight = AdaptiveTextWeight.Bolder,
                HorizontalAlignment = AdaptiveHorizontalAlignment.Center
            });
            //回傳卡片
            return(new Attachment()
            {
                ContentType = AdaptiveCard.ContentType, Content = card, Name = "SingleOrderResult"
            });
        }
        public Attachment GetCustomizedModification(AdaptiveCardDataFactory dataFactory)
        {
            TeamsBuyContext context        = new TeamsBuyContext();
            var             MenuId         = dataFactory.GetCardData <ModifyData>().MenuId;
            var             menuDetails    = new MenuDetailService(context).GetMenuOrder(MenuId).ToList();
            var             MenuOrderStore = new MenuService(context).GetMenuOrder(MenuId).Store;
            var             ModifyData     = new CardDataModel <ModifyData>()
            {
                Type  = "CustomizedModification",
                Value = new ModifyData()
                {
                    MenuId = MenuId
                }
            };

            string[] ItemsName = new string[] { "Food Name", "Price" };
            var      card      =
                NewAdaptiveCard()
                .AddRow(new AdaptiveColumnSet()
            {
                Separator = true
            }
                        .AddCol(new AdaptiveColumn()
                                .AddElement(new AdaptiveTextInput()
            {
                Id = MenuOrderStore + "1", Value = MenuOrderStore
            }))
                        .AddCol(new AdaptiveColumn()
                                .AddElement(new AdaptiveTextBlock()
            {
                Text = ""
            })
                                ))
                .AddRow(new AdaptiveColumnSet().
                        AddColumnsWithStrings(ItemsName)
                        );

            for (var i = 0; i < menuDetails.Count; i++)
            {
                card.AddRow(new AdaptiveColumnSet()      //加入一列到卡片裡
                            .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                    .AddElement(new AdaptiveTextInput()
                {
                    Id = menuDetails[i].ProductName + i.ToString(), Value = menuDetails[i].ProductName
                })                                       //在欄位內加入餐點名稱的文字
                                    )
                            .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                    .AddElement(new AdaptiveTextInput()
                {
                    Id = menuDetails[i].Amount + i.ToString(), Value = decimal.Round(menuDetails[i].Amount).ToString()
                })                                                                                                                                                          //加入餐點價格
                                    )
                            );
            }
            card
            .AddActionsSet(
                NewActionsSet()
                .AddActionToSet(
                    new AdaptiveSubmitAction().SetOpenTaskModule("Edit", JsonConvert.SerializeObject(ModifyData))   //勿必要將傳出去的資料進行Serialize
                    )
                );
            return(new Attachment()
            {
                ContentType = AdaptiveCard.ContentType, Content = card
            });
        }
        public Attachment GetChosenFoodFromMenu(AdaptiveCardDataFactory dataFactory)
        {
            var orderData = dataFactory.GetOrderedFoods(); //使用者的訂購資訊

            if (orderData == null)                         //防呆:使用者在數量那邊輸入負值
            {
                return(GetError("The numbers of products in the order cannot be negative."));
            }
            else if (orderData.Count == 0)//防呆:使用者沒有點任何東西就submit
            {
                return(GetError("You order nothing."));
            }
            var itemsName = new string[] { "食物名稱", "價錢", "數量", "備註", "單品總金額" }; //顯示於TaskModule上方的欄位名稱

            var cardData               = dataFactory.GetCardData <StoreOrderDuetime>();
            var ChosencardData         = new GetChosenData();
            var GetAllChosenDataGroups = new List <GetChosenDataGroups>();

            ChosencardData.UserID    = dataFactory.TurnContext.Activity.From.Id;
            ChosencardData.DueTime   = cardData.DueTime;
            ChosencardData.StoreName = cardData.StoreName;
            ChosencardData.UserName  = dataFactory.TurnContext.Activity.From.Name;
            //新增一基本卡片,並且附加此訂單的Guid、餐廳名稱、欄位名稱等文字訊息
            var card = NewAdaptiveCard()
                       .AddElement(new AdaptiveTextBlock() //加入訂單Guid
            {
                Text   = cardData.OrderID,
                Size   = AdaptiveTextSize.Small,
                Weight = AdaptiveTextWeight.Bolder,
                HorizontalAlignment = AdaptiveHorizontalAlignment.Right
            })
                       .AddElement(new AdaptiveTextBlock() //加入餐廳名稱
            {
                Text   = cardData.StoreName + "訂單",
                Size   = AdaptiveTextSize.Small,
                Weight = AdaptiveTextWeight.Bolder,
                HorizontalAlignment = AdaptiveHorizontalAlignment.Right
            })
                       .AddRow(new AdaptiveColumnSet()           //加入一列到卡片裡
                               .AddColumnsWithStrings(itemsName) //加入欄位名稱到一列
                               );

            //此訂單的總花費
            decimal totalMoney = 0;

            //將SelectMenuDatagroup的資訊(菜色名稱、單價、數量、備註、總額),逐一附加到卡片內
            foreach (var p in orderData)
            {
                //如果沒有這道菜點餐,那就不用計算、也不用顯示
                if (p.Quantity != "0")
                {
                    //獲取此餐點的總價:數量x單價
                    var totalSingleMoney = GetTotalMoney(p.Quantity, p.Price);

                    //將此餐點的總額計入此訂單的總價
                    totalMoney += totalSingleMoney;

                    //在卡片內加入一列,在一列中加入五個欄位並猜入不同資訊
                    card.AddRow(new AdaptiveColumnSet()      //加入一列到卡片裡
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = p.Dish_Name
                    })                                       //在欄位內加入餐點名稱的文字
                                        )
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = decimal.Round(decimal.Parse(p.Price)).ToString()
                    })                                       //加入餐點價格
                                        )
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = p.Quantity
                    })                                       //加入餐點數量
                                        )
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = p.Remarks
                    })                                       //加入備註
                                        )
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = decimal.Round(totalSingleMoney).ToString()
                    })                                                                                                     //加入此餐點的總價
                                        )
                                );
                    GetAllChosenDataGroups.Add(new GetChosenDataGroups()
                    {
                        ProductName = p.Dish_Name, Amount = decimal.Parse(p.Price), Number = int.Parse(p.Quantity), Mark = p.Remarks, TotalItemMoney = totalSingleMoney
                    });
                }
            }
            ChosencardData.GetAllChosenDatas = GetAllChosenDataGroups;
            var GetChosencardData = new CardDataModel <GetChosenData>() //務必按照此格式新增需要傳出去的資料
            {
                Type  = "GetChosenFoodFromMenuData",                    //於EchoBot判斷用
                Value = ChosencardData                                  //要傳出去的資料和資料結構
            };
            //顯示於TaskModule下方的文字資訊
            var timeAndTotalMoney = new string[] { "DueTime", cardData.DueTime, "", "總金額:", decimal.Round(totalMoney).ToString() };

            //將其他資訊加入至卡片內
            card.AddRow(new AdaptiveColumnSet()                   //加入一列到卡片裡
                        .AddColumnsWithStrings(timeAndTotalMoney) //將文字資訊變為欄位並且加入至一列中
                        )
            .AddElement(new AdaptiveTextBlock()                   //加入訂購者名稱至卡片
            {
                Text   = dataFactory.TurnContext.Activity.From.Name,
                Size   = AdaptiveTextSize.Large,
                Weight = AdaptiveTextWeight.Bolder,
                HorizontalAlignment = AdaptiveHorizontalAlignment.Center
            })
            .AddActionsSet(
                NewActionsSet()
                .AddActionToSet(
                    new AdaptiveSubmitAction().SetOpenTaskModule("View", JsonConvert.SerializeObject(GetChosencardData))    //勿必要將傳出去的資料進行Serialize
                    )
                );
            //回傳卡片
            return(new Attachment()
            {
                ContentType = AdaptiveCard.ContentType, Content = card, Name = "SingleOrderResult"
            });
        }
        public async Task <Attachment> CreateMenu(AdaptiveCardDataFactory dataFactory)
        {
            var storeData = dataFactory.GetCardData <StoreOrderDuetime>();

            var cardData = new CardDataModel <StoreOrderDuetime>() //務必按照此格式新增需要傳出去的資料
            {
                Type  = "FetchSelectedFoods",                      //於EchoBot判斷用
                Value = storeData                                  //要傳出去的資料和資料結構
            };
            var itemsName = new string[] { "菜名", "價錢", "數量", "備註" };

            var card = NewAdaptiveCard()
                       .AddElement(new AdaptiveTextBlock()
            {
                Text   = storeData.OrderID,
                Size   = AdaptiveTextSize.Small,
                Weight = AdaptiveTextWeight.Bolder,
                HorizontalAlignment = AdaptiveHorizontalAlignment.Right
            })
                       .AddElement(new AdaptiveTextBlock()
            {
                Text   = storeData.StoreName,
                Size   = AdaptiveTextSize.Large,
                Weight = AdaptiveTextWeight.Bolder,
                HorizontalAlignment = AdaptiveHorizontalAlignment.Center
            })
                       .AddRow(new AdaptiveColumnSet()
                               .AddColumnsWithStrings(itemsName)
                               );

            var foods = await new WebCrawler().GetOrderInfo2(storeData.Url);

            for (int i = 0; i < foods.Count; i++)
            {
                card
                .AddRow(new AdaptiveColumnSet()
                {
                    Separator = true
                }
                        .AddCol(new AdaptiveColumn()
                                .AddElement(new AdaptiveTextBlock()
                {
                    Text = foods[i].Dish_Name
                }))
                        .AddCol(new AdaptiveColumn()
                                .AddElement(new AdaptiveTextBlock()
                {
                    Text = decimal.Round(foods[i].Price).ToString()
                }))
                        .AddCol(new AdaptiveColumn()
                                .AddElement(new AdaptiveNumberInput()
                {
                    Min = 0, Value = 0, Id = $"{foods[i].Dish_Name}&&{foods[i].Price}"
                }))                                                                                                                        //Input相關的一定要給ID,且每個ID必須不一樣,否則傳回TaskModuleSubmit的時候會抓不到
                        .AddCol(new AdaptiveColumn()
                                .AddElement(new AdaptiveTextInput()
                {
                    Placeholder = "備註", Id = $"{foods[i].Dish_Name}&&mark"
                }))
                        );
            }

            card.AddElement(new AdaptiveTextBlock()
            {
                Text   = $"Due Time: {storeData.DueTime}",
                Size   = AdaptiveTextSize.Medium,
                Weight = AdaptiveTextWeight.Bolder,
                HorizontalAlignment = AdaptiveHorizontalAlignment.Left
            })
            .AddActionsSet(
                NewActionsSet()
                .AddActionToSet(
                    new AdaptiveSubmitAction().SetOpenTaskModule("Order", JsonConvert.SerializeObject(cardData))    //勿必要將傳出去的資料進行Serialize
                    )
                );
            return(new Attachment()
            {
                ContentType = AdaptiveCard.ContentType, Content = card
            });
        }
        public Attachment GetResultTotalFromMenuModule(AdaptiveCardDataFactory dataFactory)
        {
            string[] ItemsName      = new string[] { "Food Name", "Price", "Quantity", "Remarks", "Total" };
            var      ChosencardData = dataFactory.GetCardData <ResultTotalModule>();
            //新增一基本卡片,並且附加此訂單的Guid、餐廳名稱、欄位名稱等文字訊息
            var card = NewAdaptiveCard()
                       .AddElement(new AdaptiveTextBlock() //加入訂單Guid
            {
                Text   = ChosencardData.OrderId,
                Size   = AdaptiveTextSize.Small,
                Weight = AdaptiveTextWeight.Bolder,
                HorizontalAlignment = AdaptiveHorizontalAlignment.Right
            })
                       .AddElement(new AdaptiveTextBlock() //加入餐廳名稱
            {
                Text   = ChosencardData.StoreName + "訂單",
                Size   = AdaptiveTextSize.Small,
                Weight = AdaptiveTextWeight.Bolder,
                HorizontalAlignment = AdaptiveHorizontalAlignment.Right
            })
                       .AddRow(new AdaptiveColumnSet()           //加入一列到卡片裡
                               .AddColumnsWithStrings(ItemsName) //加入欄位名稱到一列
                               );

            //var root = JsonConvert.DeserializeObject<AllTotalItemsGroups>(Orderfoodjson);

            //此訂單的總花費
            decimal TotalMoney = 0;

            for (int i = 0; i < ChosencardData.AllTotalItems.Count; i++)
            {
                for (int j = 0; j < 1; j++)
                {
                    int     TotalQuantity  = 0;
                    decimal TotalMoneyItem = 0;

                    TotalMoney = TotalMoney + TotalMoneyItem;
                    var TotalItemMoney = ChosencardData.AllTotalItems[i].Price * TotalQuantity;
                    card.AddRow(new AdaptiveColumnSet()      //加入一列到卡片裡
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = ChosencardData.AllTotalItems[i].Dish_Name
                    })                                       //在欄位內加入餐點名稱的文字
                                        )
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = decimal.Round(ChosencardData.AllTotalItems[i].Price).ToString()
                    })                                       //加入餐點價格
                                        )
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = ChosencardData.AllTotalItems[i].TotalQuantity.ToString()
                    })                                       //加入餐點數量
                                        )
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = ChosencardData.AllTotalItems[i].TotalOrderName
                    })                                       //加入備註
                                        )
                                .AddCol(new AdaptiveColumn() //加入一欄位到一列
                                        .AddElement(new AdaptiveTextBlock()
                    {
                        Text = decimal.Round(ChosencardData.AllTotalItems[i].TotalItemMoney).ToString()
                    })                                                                                                                                   //加入此餐點的總價
                                        )
                                );
                }
            }
            string[] TimeAndTotalMoney = new string[] { "DueTime", ChosencardData.DueTime, "", "Total Amount:", decimal.Round(ChosencardData.TotalMoney).ToString() };
            card.AddRow(new AdaptiveColumnSet()                      //加入一列到卡片裡
                        .FixedtextColumnLeftColor(TimeAndTotalMoney) //加入欄位名稱到一列
                        );
            return(new Attachment()
            {
                ContentType = AdaptiveCard.ContentType, Content = card
            });
        }