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); } }
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); }
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); } }
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(); }
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); } }