示例#1
0
        public static async Task <bool> SendDeleteIngredientRequest(string id)
        {
            var sendDeleteIngredientRequest = new DeleteIngredientRequest(id);
            var response = await ServiceRequestHandler.MakeServiceCall <DeleteResponse>(sendDeleteIngredientRequest);

            if (response == null)
            {
                return(false);
            }
            else
            {
                var deletedIngredient = RealmManager.Find <Ingredient>(id);
                RealmManager.Write(() =>
                {
                    RealmManager.Realm.Remove(deletedIngredient);
                });
                return(true);
            }
        }
示例#2
0
        private async Task <List <CompDisplay> > SyncCompData(IList <Comp> comps)
        {
            List <CompDisplay> compDisplays = new List <CompDisplay>();

            if (comps.Count == 0)
            {
                return(compDisplays);
            }
            var validGetMenuItems = await GetMenuItemsRequest.SendGetMenuItemsRequest();

            foreach (Comp comp in comps)
            {
                CompDisplay compDisplay = new CompDisplay();
                MenuItem    menuItem    = RealmManager.Find <MenuItem>(comp.menuItem_id);
                compDisplay.MenuItemName = menuItem.name;
                compDisplay.Price        = menuItem.price;
                compDisplay.Reason       = comp.reason;
                compDisplays.Add(compDisplay);
            }
            return(compDisplays);
        }
示例#3
0
        public static async Task <bool> SendGetOrdersRequest()
        {
            //make a new request object
            var serviceRequest = new GetOrdersRequest();
            //get a response
            var response = await ServiceRequestHandler.MakeServiceCall <OrderList>(serviceRequest);

            if (response == null)
            {
                //call failed
                return(false);
            }
            else
            {
                // Add the response into the local database

                // Remove current contents
                RealmManager.RemoveAll <OrderList>();
                //RealmManager.RemoveAll<OrderItem>();

                // Assign each order item a unique ID
                Random rand = new Random();
                foreach (Order o in ((OrderList)response).orders.ToList())
                {
                    for (int i = 0; i < o.menuItems.Count(); ++i)
                    {
                        o.menuItems[i].newID = rand.Next(0, 1000000000).ToString();
                        while (RealmManager.Find <OrderItem>((o.menuItems[i].newID)) != null)
                        {
                            o.menuItems[i].newID = rand.Next(0, 1000000000).ToString();
                        }
                    }
                }
                RealmManager.AddOrUpdate <OrderList>(response);
                //call succeeded
                return(true);
            }
        }
示例#4
0
        private async void UpdateHotItem()
        {
            //initalizing last week date
            DateTime td            = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek); //sets td to the beginning of the week
            DateTime lastWeekStart = new DateTime(td.Year, td.Month, td.Day, 0, 0, 0).AddDays(-7);



            //Checking if hotItem are still up to date
            if (RealmManager.All <HotItem>().FirstOrDefault() != null)
            {
                //getting last time hot items have been updated
                DateTime lastUpdated = DateTime.Parse(RealmManager.All <HotItem>().FirstOrDefault().createdAt);

                if (DateTime.Compare(lastWeekStart, lastUpdated) == 0)
                {
                    //return;
                }
            }

            RealmManager.RemoveAll <OrderList>();
            RealmManager.RemoveAll <MenuItemList>();
            List <MenuItem> somelist = new List <MenuItem>();
            //finding each distinct category and adding it
            await GetOrdersRequest.SendGetOrdersRequest();

            await GetMenuItemsRequest.SendGetMenuItemsRequest();

            //creating a list of every menu item id for each order including duplicates
            List <OrderItem> menuItemIds = new List <OrderItem>();
            //creating a dictionary to keep track of the count of each menuItem
            Dictionary <String, Dictionary <MenuItem, int> > menuItemCounter = new Dictionary <String, Dictionary <MenuItem, int> >();

            foreach (Order o in RealmManager.All <OrderList>().FirstOrDefault().orders)
            {
                //this will ignore all uncompleted orders
                if (o.time_completed == null)
                {
                    continue;
                }


                DateTime orderTime = DateTime.ParseExact(o.time_completed.Replace('T', ' ').TrimEnd('Z'), "yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture);

                //Makes it easier for keying the revenue map by WEEK
                orderTime = orderTime.AddDays(-(int)orderTime.DayOfWeek);
                orderTime = new DateTime(orderTime.Year, orderTime.Month, orderTime.Day, 0, 0, 0);

                //only added menuItems from orders for the current month
                if (DateTime.Compare(lastWeekStart, orderTime) == 0)
                {
                    foreach (OrderItem oi in o.menuItems)
                    {
                        menuItemIds.Add(oi); //add next menuitem id
                    }
                }
            }

            List <MenuItem> tempList = RealmManager.All <MenuItem>().ToList();

            //updating menuItem map to see how often each was ordered
            foreach (OrderItem o in menuItemIds)
            {
                MenuItem tempMenuItem = tempList.Find(x => x._id == o._id);
                if (tempMenuItem == null)
                {
                    continue;
                }
                if (menuItemCounter.ContainsKey(tempMenuItem.category))
                {
                    try
                    {
                        menuItemCounter[tempMenuItem.category][tempMenuItem] = menuItemCounter[tempMenuItem.category][tempMenuItem] + 1;
                    }
                    catch
                    {
                        menuItemCounter[tempMenuItem.category].Add(tempMenuItem, 1);
                    }
                }
                else
                {
                    menuItemCounter[tempMenuItem.category] = new Dictionary <MenuItem, int> {
                        { tempMenuItem, 1 }
                    };
                }
            }
            foreach (string key in menuItemCounter.Keys)
            {
                KeyValuePair <MenuItem, int> topMenuItem;
                //finding the top menuItem for each category
                topMenuItem = menuItemCounter[key].Aggregate((x, y) => x.Value > y.Value ? x : y);
                //grabbing what was the top menuItem in the category from the previous week
                HotItem tempItem = RealmManager.Find <HotItem>(topMenuItem.Key.category);

                //if hotitem is in realm yet
                if (tempItem == null)
                {
                    //creating new hotitem object
                    HotItem tempHotItem = new HotItem();
                    tempHotItem.category  = topMenuItem.Key.category;
                    tempHotItem.createdAt = lastWeekStart.ToString();
                    tempHotItem._id       = topMenuItem.Key._id;

                    //getting menuItem object from list using hotItem
                    MenuItem tempMenuItem = tempList.Find(x => x._id == topMenuItem.Key._id);
                    RealmManager.Write(() => tempMenuItem.isHot = true);

                    //updating database
                    var response = await UpdateHotItemRequest.SendUpdateMenuItemRequest(tempMenuItem);

                    //updaing realm
                    RealmManager.AddOrUpdate <HotItem>(tempHotItem);
                    if (!response)
                    {
                        ContentDialog responseAlert = new ContentDialog
                        {
                            Title           = "Unsuccessful",
                            Content         = "Hot Item has not been updated successfully",
                            CloseButtonText = "Ok"
                        };
                        ContentDialogResult result = await responseAlert.ShowAsync();
                    }
                }
                else
                {
                    //if the hot item is infact new
                    if (tempItem._id != topMenuItem.Key._id)
                    {
                        //finding old hotitem menuItem object
                        MenuItem oldMenuItem = tempList.Find(x => x._id == tempItem._id);
                        RealmManager.Write(() => oldMenuItem.isHot = false);

                        //updating old hotItem in database
                        var Firstresponse = await UpdateHotItemRequest.SendUpdateMenuItemRequest(oldMenuItem);

                        if (!Firstresponse)
                        {
                            ContentDialog responseAlert = new ContentDialog
                            {
                                Title           = "Unsuccessful",
                                Content         = "Original hot item has not been updated successfully",
                                CloseButtonText = "Ok"
                            };
                            ContentDialogResult result = await responseAlert.ShowAsync();
                        }

                        //finding new menuItem object using new hotItem
                        MenuItem newMenuItem = tempList.Find(x => x._id == topMenuItem.Key._id);
                        RealmManager.Write(() => newMenuItem.isHot = true);
                        var Secondresponse = await UpdateHotItemRequest.SendUpdateMenuItemRequest(newMenuItem);

                        //updating hot item in realm to match new hot Item
                        RealmManager.Write(() =>
                        {
                            tempItem._id       = topMenuItem.Key._id;
                            tempItem.createdAt = lastWeekStart.ToString();
                        });

                        if (!Secondresponse)
                        {
                            ContentDialog responseAlert = new ContentDialog
                            {
                                Title           = "Unsuccessful",
                                Content         = "Hot Item has not been updated successfully",
                                CloseButtonText = "Ok"
                            };
                            ContentDialogResult result = await responseAlert.ShowAsync();
                        }
                    }
                }
            }
            ContentDialog responseAlertCheck = new ContentDialog
            {
                Title           = "Successful",
                Content         = "Hot Items have been updated successfully",
                CloseButtonText = "Ok"
            };
            ContentDialogResult resultCheck = await responseAlertCheck.ShowAsync();
        }
示例#5
0
        public ReviewStatList(IList <Review> reviews)
        {
            OverallReviewStats   = new List <OverallReviewStat>();
            WaitstaffReviewStats = new List <WaitstaffReviewStat>();
            FoodReviewStats      = new List <FoodReviewStat>();

            int total1      = 0;
            int numReviews1 = 0;
            int total2      = 0;
            int numReviews2 = 0;
            int total3      = 0;
            int numReviews3 = 0;

            foreach (Review review in reviews)
            {
                if (review.question01_rating != null)
                {
                    OverallReviewStat overallReviewStat = new OverallReviewStat();
                    total1 += (int)review.question01_rating;
                    numReviews1++;
                    overallReviewStat.Rating   = (int)review.question01_rating;
                    overallReviewStat.DateTime = review.createdAt.Substring(11, 8) + " " + review.createdAt.Substring(5, 2) + "/" + review.createdAt.Substring(8, 2) + "/" + review.createdAt.Substring(0, 4);
                    overallReviewStat.Message  = review.question01_reason;

                    //wire it into the list
                    OverallReviewStats.Add(overallReviewStat);
                }
                if (review.question02_rating != null)
                {
                    WaitstaffReviewStat waitstaffReviewStat = new WaitstaffReviewStat();
                    total2 += (int)review.question02_rating;
                    numReviews2++;
                    waitstaffReviewStat.Rating   = (int)review.question02_rating;
                    waitstaffReviewStat.DateTime = review.createdAt.Substring(11, 8) + " " + review.createdAt.Substring(5, 2) + "/" + review.createdAt.Substring(8, 2) + "/" + review.createdAt.Substring(0, 4);
                    waitstaffReviewStat.Message  = review.question02_reason;

                    //get employee name
                    var emp = RealmManager.Find <Employee>(review.employee_id);
                    if (emp != null)
                    {
                        waitstaffReviewStat.Server = emp.first_name;
                    }

                    //wire it into the list
                    WaitstaffReviewStats.Add(waitstaffReviewStat);
                }
                if (review.question03_rating != null)
                {
                    FoodReviewStat foodReviewStat = new FoodReviewStat();
                    total3 += (int)review.question03_rating;
                    numReviews3++;
                    foodReviewStat.Rating   = (int)review.question03_rating;
                    foodReviewStat.DateTime = review.createdAt.Substring(11, 8) + " " + review.createdAt.Substring(5, 2) + "/" + review.createdAt.Substring(8, 2) + "/" + review.createdAt.Substring(0, 4);
                    foodReviewStat.Message  = review.question03_reason;

                    //get food list
                    foodReviewStat.MenuItemNames = new List <OrderItem>();

                    var order = RealmManager.Find <Order>(review.order_id);
                    if (order != null)
                    {
                        foreach (OrderItem orderItem in order.menuItems)
                        {
                            foodReviewStat.MenuItemNames.Add(orderItem);
                        }
                    }

                    FoodReviewStats.Add(foodReviewStat);
                }
            }

            //get averages
            if (numReviews1 != 0)
            {
                Average1 = Convert.ToDouble(total1 / numReviews1);
            }
            if (numReviews2 != 0)
            {
                Average2 = Convert.ToDouble(total2 / numReviews2);
            }
            if (numReviews3 != 0)
            {
                Average3 = Convert.ToDouble(total3 / numReviews3);
            }
        }