public async Task <IActionResult> OnPostBuyAsync(int id) { var user = await _UserManager.GetUserAsync(User); CheckoutCustomer customer = await _db.CheckoutCustomers.FindAsync(user.Email); var item = _db.BasketItems.FromSql("SELECT * FROM BasketItems WHERE MenuID = {0} " + "AND BasketID = {1}", id, customer.BasketID).ToList().FirstOrDefault(); if (item == null) { CheckoutBasketItem newItem = new CheckoutBasketItem { BasketID = customer.BasketID, MenuID = id, Quantity = 1 }; _db.BasketItems.Add(newItem); await _db.SaveChangesAsync(); } else { item.Quantity = item.Quantity + 1; _db.Attach(item).State = EntityState.Modified; try { await _db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException e) { throw new Exception($"Basket not found!", e); } } return(RedirectToPage("/OrderMenu", "Added")); }
public ActionResult <CheckoutBasket> Add([FromBody] int id) { var menuItem = _menuItemRepository.Get(id); if (menuItem == null) { return(NotFound()); } var checkOutBasket = GetCheckOutBasket(); if (!checkOutBasket.BasketItems.Any(x => x.MenuItem.Equals(menuItem))) { var checkoutBasketItem = new CheckoutBasketItem(menuItem); checkOutBasket.BasketItems.Add(checkoutBasketItem); } else { checkOutBasket.BasketItems.First(x => x.MenuItem == menuItem).Quantity++; } SaveCheckoutBasket(checkOutBasket); return(GetCheckOutBasket()); }