Exemplo n.º 1
0
        public IActionResult Update(int quantity, int productID)
        {
            string cartID;
            Guid   trackingNumber;

            if (Request.Cookies.TryGetValue("cartID", out cartID) && Guid.TryParse(cartID, out trackingNumber) && _context.Cart.Any(x => x.TrackingNumber == trackingNumber))
            {
                var c = _context.Cart
                        .Include(x => x.CartLineItems)
                        .ThenInclude(y => y.ProductConfiguration)
                        .ThenInclude(z => z.Product)
                        .Single(x => x.TrackingNumber == trackingNumber);

                var cartItem = c.CartLineItems.Single(x => x.ProductConfiguration.ID == productID);

                cartItem.Quantity = quantity;

                if (cartItem.Quantity == 0)
                {
                    _context.CartLineItem.Remove(cartItem);
                }
                _context.SaveChanges();
            }

            return(RedirectToAction("Index"));
        }
Exemplo n.º 2
0
        public IActionResult Index(int id, int?size, int?color)
        {
            Guid         cartID;
            Cart         c;
            CartLineItem i;

            if (Request.Cookies.ContainsKey("cartID") && Guid.TryParse(Request.Cookies["cartID"], out cartID) && _context.Cart.Any(x => x.TrackingNumber == cartID))
            {
                c = _context.Cart
                    .Include(x => x.CartLineItems)
                    .ThenInclude(y => y.ProductConfiguration)
                    .ThenInclude(z => z.Product)
                    .Single(x => x.TrackingNumber == cartID);
            }
            else
            {
                c                = new Cart();
                cartID           = Guid.NewGuid();
                c.TrackingNumber = cartID;
                _context.Cart.Add(c);
            }

            if (User.Identity.IsAuthenticated)
            {
                c.User = _context.Users.Find(User.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier).Value);
            }
            i = c.CartLineItems.FirstOrDefault(x => x.ProductConfiguration.Product.ID == id && x.ProductConfiguration.ColorID == color && x.ProductConfiguration.SizeID == size);
            if (i == null)
            {
                i      = new CartLineItem();
                i.Cart = c;
                i.ProductConfiguration = _context.ProductConfiguration.Single(x => x.Product.ID == id && x.ColorID == color && x.SizeID == size);
                c.CartLineItems.Add(i);
            }
            i.Quantity++;

            _context.SaveChanges();
            Response.Cookies.Append("cartID", c.TrackingNumber.ToString(),
                                    new Microsoft.AspNetCore.Http.CookieOptions
            {
                Expires = DateTime.Now.AddYears(1)
            });



            return(RedirectToAction("Index", "Shipping"));
        }