public async Task <IActionResult> Remove(int id) { WineCart cart = null; if (User.Identity.IsAuthenticated) { var currentUser = await _userManager.GetUserAsync(User); cart = await _context.WineCarts.Include(x => x.WineCartProducts).FirstOrDefaultAsync(x => x.ApplicationUserID == currentUser.Id); } else { if (Request.Cookies.ContainsKey("cart_id")) { int existingCartID = int.Parse(Request.Cookies["cart_id"]); cart = await _context.WineCarts.Include(x => x.WineCartProducts).FirstOrDefaultAsync(x => x.ID == existingCartID); cart.DateLastModified = DateTime.Now; } } WineCartProduct product = cart.WineCartProducts.FirstOrDefault(x => x.ID == id); cart.WineCartProducts.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 ActionResult CartSummary() { var cart = WineCart.GetCart(this.HttpContext); ViewData["CartCount"] = cart.GetCount(); return(PartialView("CartSummary")); }
public ActionResult AddToCart(int id) { var addedItem = wineDB.Products .Single(item => item.ID == id); var cart = WineCart.GetCart(this.HttpContext); int count = cart.AddToCart(addedItem); if (count == 0) { return(View()); } var results = new WineCartRemoveViewModel { Message = Server.HtmlEncode(addedItem.Name) + " has been added to your shopping cart.", CartTotal = cart.GetTotal(), CartCount = cart.GetCount(), ProductQuantity = count, DeleteID = id }; return(Json(results)); }
public async Task <ActionResult> Confirm(FormCollection values) { var order = new Order(); TryUpdateModel(order); try { order.Username = User.Identity.GetUserName(); order.OrderDate = DateTime.Now; var currentUserId = User.Identity.GetUserId(); wineDB.Orders.Add(order); await wineDB.SaveChangesAsync(); var cart = WineCart.GetCart(this.HttpContext); order = cart.CreateOrder(order); return(RedirectToAction("Complete", new { id = order.OrderId })); } catch { return(View(order)); } }
public IActionResult Index(CheckoutModel model) { if (ModelState.IsValid) { WineOrder order = new WineOrder { City = model.City, State = model.State, Email = model.Email, StreetAddress = model.StreetAddress, AptSuite = model.AptSuite, ZipCode = model.ZipCode, DateCreated = DateTime.Now, DateLastModified = DateTime.Now, PaidDate = (DateTime?)null }; WineCart cart = null; if (User.Identity.IsAuthenticated) { var currentUser = _userManager.GetUserAsync(User).Result; cart = _context.WineCarts.Include(x => x.WineCartProducts).ThenInclude(x => x.WineProducts).Single(x => x.ApplicationUserID == currentUser.Id); } else if (Request.Cookies.ContainsKey("cart_id")) { int existingCartID = int.Parse(Request.Cookies["cart_id"]); cart = _context.WineCarts.Include(x => x.WineCartProducts).ThenInclude(x => x.WineProducts).FirstOrDefault(x => x.ID == existingCartID); } foreach (var cartItem in cart.WineCartProducts) { order.WineOrderProducts.Add(new WineOrderProduct { DateCreated = DateTime.Now, DateLastModified = DateTime.Now, Quantity = cartItem.Quantity ?? 1, ProductID = cartItem.WineProductsID, ProductDescription = cartItem.WineProducts.Description, ProductName = cartItem.WineProducts.Name, ProductPrice = cartItem.WineProducts.Price ?? 0 }); } _context.WineCartProducts.RemoveRange(cart.WineCartProducts); if (Request.Cookies.ContainsKey("cart_id")) { Response.Cookies.Delete("cart_id"); } _context.WineOrders.Add(order); _context.SaveChanges(); return(RedirectToAction("Payment", new { id = order.ID })); } return(View()); }
public ActionResult Index() { var cart = WineCart.GetCart(this.HttpContext); var viewModel = new WineCartViewModel { CartProducts = cart.GetCartItems(), CartTotal = cart.GetTotal() }; return(View(viewModel)); }
private async Task <bool> ChangeCartOwner(ApplicationUser user) { WineCart model = null; if (Request.Cookies.ContainsKey("cart_id")) { int existingCartID = int.Parse(Request.Cookies["cart_id"]); model = await _context.WineCarts.FirstOrDefaultAsync(x => x.ID == existingCartID); model.ApplicationUserID = user.Id; await _context.SaveChangesAsync(); Response.Cookies.Delete("cart_id"); return(true); } return(false); }
public IActionResult Index() { WineCart model = null; if (User.Identity.IsAuthenticated) { var currentUser = _userManager.GetUserAsync(User).Result; model = _context.WineCarts.Include(x => x.WineCartProducts).ThenInclude(x => x.WineProducts).Single(x => x.ApplicationUserID == currentUser.Id); } else if (Request.Cookies.ContainsKey("cart_id")) { int existingCartID = int.Parse(Request.Cookies["cart_id"]); model = _context.WineCarts.Include(x => x.WineCartProducts) .ThenInclude(x => x.WineProducts).FirstOrDefault(x => x.ID == existingCartID); } else { model = new WineCart(); } return(View(model)); }
public ActionResult RemoveFromCart(int id) { var cart = WineCart.GetCart(this.HttpContext); string itemName = wineDB.Products .Single(item => item.ID == id).Name; int itemCount = cart.RemoveFromCart(id); var results = new WineCartRemoveViewModel { Message = "One (1) " + Server.HtmlEncode(itemName) + " has been removed from your shopping cart.", CartTotal = cart.GetTotal(), CartCount = cart.GetCount(), ProductQuantity = itemCount, DeleteID = id }; return(Json(results)); }