public async Task <IActionResult> Remove(int id) { PetCart cart = null; if (User.Identity.IsAuthenticated) { var currentUser = await _userManager.GetUserAsync(User); cart = await _context.PetCarts.Include(x => x.PetCartProducts).FirstOrDefaultAsync(x => x.ApplicationUserID == currentUser.Id); } else { if (Request.Cookies.ContainsKey("cart_id")) { int existingCartID = int.Parse(Request.Cookies["cart_id"]); cart = await _context.PetCarts.Include(x => x.PetCartProducts).FirstOrDefaultAsync(x => x.ID == existingCartID); cart.DateLastModified = DateTime.Now; } } PetCartProduct product = cart.PetCartProducts.FirstOrDefault(x => x.ID == id); cart.PetCartProducts.Remove(product); 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> Details(int?id, int quantity, string breed, int timeLength, DateTime startDate, int animalCount, decimal price, string length, bool isRecurring) { PetCart cart = null; if (User.Identity.IsAuthenticated) { var currentUser = await _userManager.GetUserAsync(User); cart = await _context.PetCarts.Include(x => x.PetCartProducts).FirstOrDefaultAsync(x => x.ApplicationUserID == currentUser.Id); if (cart == null) { cart = new PetCart(); cart.ApplicationUserID = currentUser.Id; cart.DateCreated = DateTime.Now; cart.DateLastModified = DateTime.Now; _context.PetCarts.Add(cart); } } else { if (Request.Cookies.ContainsKey("cart_id")) { int existingCartID = int.Parse(Request.Cookies["cart_id"]); cart = await _context.PetCarts.Include(x => x.PetCartProducts).FirstOrDefaultAsync(x => x.ID == existingCartID); } if (cart == null) { cart = new PetCart { DateCreated = DateTime.Now, DateLastModified = DateTime.Now }; _context.PetCarts.Add(cart); } } PetCartProduct product = cart.PetCartProducts.FirstOrDefault(x => x.PetID == id); if (product == null) { product = new PetCartProduct { DateCreated = DateTime.Now, DateLastModified = DateTime.Now, PetID = id ?? 0, Quantity = 0, TimeLength = timeLength, StartDate = startDate, AnimalCount = 0, Length = length, IsRecurring = isRecurring }; cart.PetCartProducts.Add(product); } product.Quantity += quantity; product.AnimalCount += animalCount; product.DateLastModified = DateTime.Now; product.StartDate = startDate; product.Length = length; product.IsRecurring = isRecurring; 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")); }