/// <summary> /// Show order items in cart order /// </summary> /// <param name="id">member id</param> /// <returns>Cart view</returns> public ActionResult Cart(int? id) { //validate user role string userId = CurrentUser.Id; var member = db.Members.FirstOrDefault(m => m.User.Id == userId); if (member == null) { return RedirectToAction("Index", "Home"); } //validate that the member has a cart var exists = db.Orders.Where(m => m.Member.Id == member.Id).Where(d => d.OrderPlacementDate == null).Any(); TempData["hasAddress"] = db.Addresses.Where(a => a.Member.Id == member.Id).FirstOrDefault(); if (!exists) { //empty cart TempData["message"] = "Cart is empty"; return View(Enumerable.Empty<CartViewModel>().ToList()); } //This gets the cart order id int orderId = db.Orders.Where(m => m.Member.Id == member.Id).Where(d => d.OrderPlacementDate == null).First().Id; //get all gameIds for order Id IEnumerable<OrderItem> orderItems = db.OrderItems.Where(o => o.OrderId == orderId); List<CartViewModel> cartItems = new List<CartViewModel>(); foreach (var orderItem in orderItems) { CartViewModel cvm = new CartViewModel(orderItem, false); cartItems.Add(cvm); } return View(cartItems); }
/// <summary> /// Checks the checkboxes (represented in the CartViewModel object as download and hardcopy booleans, /// deletes the items, and then checks to see if the cart has any items left, if it does not it deletes /// cart (which is an order with no order items at that point) /// </summary> /// <param name="cart">CartViewModel object</param> public void Delete(CartViewModel[] cart) { //get original order count Order originalOrder = db.Orders.Find(cart.First().item.OrderId); //check number of items removes int itemsRemoved = 0; int originalNumberOfItems = originalOrder.OrderItems.Count(); foreach (var cvm in cart) { //remove selected items if (cvm.remove) { itemsRemoved++; OrderItem orderItem = db.OrderItems.Where(g => g.GameId == cvm.item.GameId && g.OrderId == cvm.item.OrderId).First(); db.OrderItems.Remove(orderItem); db.SaveChanges(); } } db.SaveChanges(); //if order is now empty if (originalNumberOfItems == itemsRemoved) { //delete the now empty order db.Orders.Remove(originalOrder); db.SaveChanges(); } }
public ActionResult AlterCart(CartViewModel[] cart, string submit) { //validate user role string userId = CurrentUser.Id; var member = db.Members.FirstOrDefault(m => m.User.Id == userId); if (member == null) { return RedirectToAction("Index", "Home"); } if (cart == null) { return RedirectToAction("Cart"); } if (submit == "Remove Selected") { Delete(cart); } return RedirectToAction("Cart"); }