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")); }
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")); }