예제 #1
0
 public EGRepository(TeamsBuyContext context)
 {
     if (context == null)
     {
         throw new ArgumentException();
     }
     _context = context;
 }
        }//middleware

        public void Create(string memberId, string url)
        {
            var con = new TeamsBuyContext();
            var pay = new Payment
            {
                MemberId = memberId,
                Url      = url
            };

            con.Payment.Add(pay);
            con.SaveChanges();
        }
예제 #3
0
        public async Task <TaskModuleResponse> GetModifyModuleData(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken)
        {
            var             TaskInfo       = new TaskModuleTaskInfo();
            TeamsBuyContext context        = new TeamsBuyContext();
            var             asJobject      = JObject.FromObject(taskModuleRequest.Data);
            var             Value          = asJobject.ToObject <CardTaskFetchValue <string> >()?.Data;
            var             MenuOrderData  = new MenuDetailService(context).GetMenuOrder(Value).ToList();
            var             MenuOrderStore = new MenuService(context).GetMenuOrder(Value).Store;

            TaskInfo.Card = new CreateCardService().GetCustomizedModification(MenuOrderStore, MenuOrderData, Value);
            SetTaskInfo(TaskInfo, TaskModuleUIConstants.UpdateMenu);
            return(await Task.FromResult(TaskInfo.ToTaskModuleResponse()));
        }
예제 #4
0
        public CustomMenuService(TeamsBuyContext context, IConfiguration config)
        {
            _context = context;

            if (string.IsNullOrEmpty(connString))
            {
                connString = config.GetConnectionString("TeamsBuyContext");
            }
            if (conn == null)
            {
                conn = new SqlConnection(connString);
            }
        }
예제 #5
0
        public async Task <TaskModuleResponse> FinishSelectDishesSubmit(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken)
        {
            TeamsBuyContext context  = new TeamsBuyContext();
            var             TaskInfo = new TaskModuleTaskInfo();
            JObject         Data     = JObject.Parse(JsonConvert.SerializeObject(taskModuleRequest.Data));
            var             StoreAndGuidAndDueTime = Data.Property("data").Value.ToString();

            new OrganizeStructureService().RemoveNeedlessStructure(Data);
            string  SelectJson = ProcessAllSelect(Data);
            JObject o          = new JObject();

            o["SelectMenu"] = JArray.Parse(SelectJson);
            bool DecideQuanRem  = true;
            bool Number         = true;
            var  AllSelectDatas = JsonConvert.DeserializeObject <SelectMenuDatagroup>(o.ToString());

            foreach (var item in AllSelectDatas.SelectMenu)
            {
                if (item.Quantity == "0" && item.Remarks != "")
                {
                    DecideQuanRem = false;
                }
                if (Math.Sign(decimal.Parse(item.Quantity)) < 0 || (decimal.Parse(item.Quantity) - Math.Floor(decimal.Parse(item.Quantity))) != 0)
                {
                    Number = false;
                }
            }
            if (DecideQuanRem == true && Number == true)
            {
                //取完整資料
                var OAllOrderDatasStr = ProcessUnifyData(o);
                var SelectObject      = JsonConvert.DeserializeObject <SelectAllDataGroup>(OAllOrderDatasStr);
                SelectObject.UserID = turnContext.Activity.From.Id;
                var ExistGuid = Guid.Parse("cf1ed7b9-ae4a-4832-a9f4-fdee6e492085");
                new OrderDetailService(context).CreateOrderDetail(SelectObject, SelectObject.SelectAllOrders, ExistGuid);

                TaskInfo.Card = new CreateCardService().GetResultClickfood(new OrganizeStructureService().GetOrderID(StoreAndGuidAndDueTime), new OrganizeStructureService().GetStoreName(StoreAndGuidAndDueTime), o.ToString(), new OrganizeStructureService().GetDueTime(StoreAndGuidAndDueTime), turnContext.Activity.From.Name);
                SetTaskInfo(TaskInfo, TaskModuleUIConstants.AdaptiveCard);
                await turnContext.SendActivityAsync(MessageFactory.Attachment(new CreateCardService().GetResultClickfood(new OrganizeStructureService().GetOrderID(StoreAndGuidAndDueTime), new OrganizeStructureService().GetStoreName(StoreAndGuidAndDueTime), o.ToString(), "12:00", turnContext.Activity.From.Name)));
            }
            else
            {
                TaskInfo.Card = new CreateCardService().GetError(turnContext.Activity.From.Name);
                SetTaskInfo(TaskInfo, TaskModuleUIConstants.AdaptiveCard);
                await turnContext.SendActivityAsync(MessageFactory.Attachment(new CreateCardService().GetError(turnContext.Activity.From.Name)));
            }
            return(await Task.FromResult(TaskInfo.ToTaskModuleResponse()));
        }
예제 #6
0
        public void ModifyMenuData(TaskModuleRequest taskModuleRequest, TaskModuleTaskInfo TaskInfo)
        {
            TeamsBuyContext context   = new TeamsBuyContext();
            var             asJobject = JObject.FromObject(taskModuleRequest.Data);
            var             Value     = asJobject.ToObject <CardTaskFetchValue <string> >()?.Data;
            JObject         Data      = JObject.Parse(JsonConvert.SerializeObject(taskModuleRequest.Data));

            new OrganizeStructureService().ModifyRemoveNeedlessStructure(Data);
            var inputlist = new List <string>();

            foreach (var item in Data)
            {
                inputlist.Add(item.Value.ToString());
            }
            inputlist.Remove(inputlist[0]);
            var StoreName = inputlist[0];

            inputlist.Remove(inputlist[0]);
            var Modify = new ModifyGroup();
            var w      = new List <ModifyMultiple>();

            for (int i = 0; 2 * i < inputlist.Count(); i++)
            {
                w.Add(new ModifyMultiple()
                {
                    ProductName = inputlist[2 * i], Amount = inputlist[2 * i + 1], MenuId = Value
                });
            }
            Modify.AllModifyMultiple = w;
            Modify.StoreName         = StoreName;
            for (var i = 0; i < Modify.AllModifyMultiple.Count; i++)
            {
                if (Modify.AllModifyMultiple[i].ProductName == "" || Modify.AllModifyMultiple[i].Amount.ToString() == "")
                {
                    Modify.AllModifyMultiple.Remove(Modify.AllModifyMultiple[i]);
                }
            }
            new MenuService(context).UpdateMenuOrderStoreName(Value, Modify.StoreName);
            new MenuDetailService(context).DeleteMenuDetail(Value);
            new MenuDetailService(context).CreateMenuDetail(Modify);

            TaskInfo.Card = new CreateCardService().GetResultCustomizedModification(Modify.StoreName, Modify.AllModifyMultiple);
            SetTaskInfo(TaskInfo, TaskModuleUIConstants.UpdateMenu);
        }
        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 ModifyMenuData(string MenuId)
        {
            TeamsBuyContext context = new TeamsBuyContext();
            var             jData   = JObject.FromObject(Request.Data);

            RemoveProperty(jData);
            var inputlist = new List <string>();

            foreach (var item in jData)
            {
                inputlist.Add(item.Value.ToString());
            }
            var StoreName = inputlist[0];

            inputlist.Remove(inputlist[0]);
            var Modify     = new ModifyGroup();
            var ModifyData = new List <ModifyMultiple>();

            for (int i = 0; 2 * i < inputlist.Count(); i++)
            {
                ModifyData.Add(new ModifyMultiple()
                {
                    ProductName = inputlist[2 * i], Amount = inputlist[2 * i + 1], MenuId = MenuId
                });
            }
            Modify.AllModifyMultiple = ModifyData;
            Modify.StoreName         = StoreName;
            for (var i = 0; i < Modify.AllModifyMultiple.Count; i++)
            {
                if (Modify.AllModifyMultiple[i].ProductName == "" || Modify.AllModifyMultiple[i].Amount.ToString() == "")
                {
                    Modify.AllModifyMultiple.Remove(Modify.AllModifyMultiple[i]);
                }
            }
            new MenuService(context).UpdateMenuOrderStoreName(MenuId, Modify.StoreName);
            new MenuDetailService(context).DeleteMenuDetail(MenuId);
            new MenuDetailService(context).CreateMenuDetail(Modify);
        }
        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 OrderDetailService(TeamsBuyContext _context)
 {
     context = _context;
 }//middleware
예제 #11
0
 public OrderService(TeamsBuyContext _context)
 {
     context = _context;
 }
        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
            });
        }
예제 #14
0
 public MenuService(TeamsBuyContext _context)
 {
     context = _context;
 }
예제 #15
0
 public PayMentService(TeamsBuyContext _context)
 {
     context = _context;
 }//middleware