public async Task <ActionResult> RemoveItem(CartOrderMenuItem item) { ApplicationUser user = await GetCurrentUserAsync(); OrderInfo cart = await _context.OrderInfo.Where(usr => usr.User.Id == user.Id) .Where(s => s.Status == Models.Status.Cart).SingleOrDefaultAsync(); CartOrder viewModelCart = OrderDeserialize(cart); if (ModelState.IsValid) { foreach (var menuitem in viewModelCart.CartOrderMenuItems) { if (menuitem.MenuItem.Id == item.MenuItem.Id) { viewModelCart.CartOrderMenuItems.Remove(menuitem); break; } } OrderInfo temp = OrderSerialize(viewModelCart); cart.OrderMenuItems = temp.OrderMenuItems; cart.TotalPrice = CalculateTotalPrice(viewModelCart); await _context.SaveChangesAsync(); return(Json(true)); } return(Json(false)); }
/// <summary> /// Converts item to view model containing choice of addons tha can be added /// </summary> /// <param name="item">Menu item to convert to view model</param> /// <param name="subcategory">Subcategory to grab addons from</param> /// <returns>View model of item and addons</returns> private CartOrderMenuItem ConvertToOrderMenuItem(MenuItem item, Subcategory subcategory) { CartOrderMenuItem cartOrderMenuItem = new CartOrderMenuItem() { MenuItem = item, ChoiceOfAddons = subcategory.AddOns }; return(cartOrderMenuItem); }
public async Task <ActionResult> EditItem(CartOrderMenuItem item) { ApplicationUser user = await GetCurrentUserAsync(); OrderInfo cart = await _context.OrderInfo.Where(usr => usr.User.Id == user.Id) .Where(s => s.Status == Models.Status.Cart).SingleOrDefaultAsync(); CartOrder viewModelCart = OrderDeserialize(cart); if (ModelState.IsValid) { //CartOrderMenuItem menuitem = viewModelCart.CartOrderMenuItems.Find(i => i.MenuItem.Id == item.MenuItem.Id); //menuitem.MenuItem.MenuItemIngredients = item.MenuItem.MenuItemIngredients; viewModelCart.TotalPrice = 0; foreach (var menuitem in viewModelCart.CartOrderMenuItems) { if (menuitem.MenuItem.Id == item.MenuItem.Id) { menuitem.MenuItem.MenuItemIngredients = item.MenuItem.MenuItemIngredients; menuitem.AddOns = item.AddOns; menuitem.MenuItem.Size = item.MenuItem.Size; } // Calculate total price viewModelCart.TotalPrice += menuitem.MenuItem.Price; if (menuitem.AddOns != null) { foreach (var addon in menuitem.AddOns) { viewModelCart.TotalPrice += addon.Price; } } } OrderInfo temp = OrderSerialize(viewModelCart); cart.OrderMenuItems = temp.OrderMenuItems; cart.TotalPrice = temp.TotalPrice; await _context.SaveChangesAsync(); return(Json(true)); } return(Json(false)); }