public async Task <IActionResult> AddToCart(int?id, int quantity, string color) { ThingCart cart = null; if (User.Identity.IsAuthenticated) { var currentUser = await _userManager.GetUserAsync(User); cart = await _context.ThingCarts.Include(x => x.ThingCartThings).FirstOrDefaultAsync(x => x.ApplicationUserID == currentUser.Id); if (cart == null) { cart = new ThingCart(); cart.ApplicationUserID = currentUser.Id; cart.DateCreated = DateTime.Now; cart.DateLastModified = DateTime.Now; _context.ThingCarts.Add(cart); } } else { return(RedirectToAction("Login", "Account")); } ThingCartThing thing = cart.ThingCartThings.FirstOrDefault(x => x.ThingID == id); if (thing == null) { thing = new ThingCartThing { DateCreated = DateTime.Now, DateLastModified = DateTime.Now, ThingID = id ?? 0, Quantity = 0 }; cart.ThingCartThings.Add(thing); } thing.Quantity += quantity; thing.DateLastModified = DateTime.Now; await _context.SaveChangesAsync(); if (!User.Identity.IsAuthenticated) { Response.Cookies.Append("cart_id", cart.ID.ToString(), new Microsoft.AspNetCore.Http.CookieOptions { Expires = DateTime.Now.AddYears(1) }); } return(RedirectToAction("Index", "Cart")); }
public async Task <IActionResult> Remove(int?id) { //if (id == null) //{ // throw new ArgumentNullException(nameof(id)); //} ThingCart cart = null; if (User.Identity.IsAuthenticated) { var currentUser = await _userManager.GetUserAsync(User); cart = await _context.ThingCarts.Include(x => x.ThingCartThings).FirstOrDefaultAsync(x => x.ApplicationUserID == currentUser.Id); } else { if (Request.Cookies.ContainsKey("cart_id")) { int existingCartID = int.Parse(Request.Cookies["cart_id"]); //cart = _context.ThingCarts.Find(existingCartID); cart = await _context.ThingCarts.Include(x => x.ThingCartThings).FirstOrDefaultAsync(x => x.ID == existingCartID); cart.DateLastModified = DateTime.Now; } } ThingCartThing thing = cart.ThingCartThings.FirstOrDefault(x => x.ThingID == id); //thing.Quantity = thing.Quantity - 1; //thing.Quantity = null; _context.Remove(thing); thing.DateLastModified = DateTime.Now; await _context.SaveChangesAsync(); if (!User.Identity.IsAuthenticated) { Response.Cookies.Append("cart_id", cart.ID.ToString(), new Microsoft.AspNetCore.Http.CookieOptions { Expires = DateTime.Now.AddYears(1) }); } return(RedirectToAction("Index", "Cart")); }