示例#1
0
        public async Task <IActionResult> Edit(int id, [Bind("CartItemId,ShoppingCartId,DishId,Quantity,Price")] CartItem cartItem, IFormCollection collection)
        {
            if (id != cartItem.CartItemId)
            {
                return(NotFound());
            }

            _cartService.RemoveCartItemIngredients(id);
            var _cartItem = _context.CartItems.Include(ci => ci.CartItemIngredients).Include(c => c.Dish).ThenInclude(ci => ci.DishIngredients).ThenInclude(m => m.Ingredient)
                            .Where(ci => ci.CartItemId == id).FirstOrDefault();

            _cartItem.Price = _cartItem.Dish.Price;

            foreach (var item in collection.Keys.Where(m => m.StartsWith("ingredient-")))
            {
                var ingStr         = item.Remove(0, 11);
                var ingId          = Int32.Parse(ingStr);
                var listIngredient = _ingredientService.All().FirstOrDefault(d => d.IngredientId == ingId);

                _cartItem.CartItemIngredients.Add(new CartItemIngredient()
                {
                    Ingredient = listIngredient
                });
                _cartItem.Price += _dishService.DishHasIngredient(_cartItem.DishId, listIngredient.IngredientId)
                    ? 0: listIngredient.Price;
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(_cartItem);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CartItemExists(_cartItem.CartItemId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }

                return(RedirectToAction("Index", "Home"));
            }
            ViewData["DishId"]         = new SelectList(_context.Dishes, "DishId", "DishId", _cartItem.DishId);
            ViewData["ShoppingCartId"] = new SelectList(_context.ShoppingCart, "ShoppingCartId", "ShoppingCartId", _cartItem.ShoppingCartId);
            return(View(_cartItem));
        }