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"));
        }
Ejemplo n.º 2
0
        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());
        }