public ActionResult RemoveFromCart(int id) { string msg; // Remove the item from the cart RentalCart cart = null; string itemName = ""; try { cart = RentalCart.GetCart(this.HttpContext); // Get the name of the Item to display confirmation itemName = market.CartItems .Single(item => item.id == id).Item.Name; // Remove from cart cart.RemoveFromCart(id); } catch (Exception ex) { ErrorMessage.ErrorCode = ErrorCode.UNKNOWN; return(View("ErrorMessage", ErrorMessage)); } if (cart.GetCartItems().Count == 0) { msg = "Your Rental Cart is Empty."; } else { msg = Server.HtmlEncode(itemName) + " has been removed from your shopping cart."; } // Display the confirmation message var results = new RentalCartRemoveViewModel { Message = msg, CartTotal = cart.GetTotal(), DeleteId = id, CartCount = cart.GetCartItems().Count }; Session["RentalCartItems"] = results.CartCount; return(Json(results)); }
public ActionResult EditCartItem(RentalCart CartModel, int id, string pickupdate, string dropoffdate) { try { DateTime pickupDate = DateTime.Parse(pickupdate); DateTime dropoffDate = DateTime.Parse(dropoffdate); // TODO: Add update logic here RentalCart cart = null; try { cart = RentalCart.GetCart(this.HttpContext); } catch { ErrorMessage.ErrorCode = ErrorCode.UNKNOWN; return(View("ErrorMessage", ErrorMessage)); } if (pickupDate < DateTime.Today || dropoffDate < DateTime.Today) { var results = new RentalCartUpdateViewModel { Error = true, Message = "Please enter valid dates" }; return(Json(results)); } int rentalPeriod = (dropoffDate - pickupDate).Days; if (rentalPeriod <= 0) { var results = new RentalCartUpdateViewModel { Error = true, Message = "Your dropoff date cannot be earlier than or the same as your pickup date" }; return(Json(results)); } var cartItem = market.CartItems.Single(i => i.id == id); foreach (DateTime d in GetBlockedDates(cartItem.ItemId)) { if (pickupDate.Date <= d.Date && dropoffDate.Date >= d.Date) { var results = new RentalCartUpdateViewModel { Error = true, Message = "Your proposed rental period includes blocked dates. Please select different dates and try again." }; return(Json(results)); } if (pickupDate.AddDays(1).Date == d.Date) { var results = new RentalCartUpdateViewModel { Error = true, Message = "Your pickup date has to be atlest two days before a blocked date." }; return(Json(results)); } } // Get the name of the Item to display confirmation string itemName = cartItem.Item.Name; decimal itemCost = cartItem.Item.CostPerDay; if (cart.EditInCart(id, DateTime.Parse(pickupdate), DateTime.Parse(dropoffdate))) { var result = new RentalCartUpdateViewModel { Error = false, CartTotal = cart.GetTotal(), UpdatedItemTotal = (rentalPeriod * itemCost) + cartItem.Item.SecurityDeposit, UpdatedId = id, Message = "", NumberOfDays = rentalPeriod }; return(Json(result)); } else { var results = new RentalCartUpdateViewModel { Error = true, Message = "There already exists an item in your rental cart during the same period" }; ModelState.AddModelError("", "There already exists an item in your rental cart during the same period"); return(Json(results)); } } catch (Exception ex) { /* * ErrorMessage.ErrorCode = ErrorCode.UNKNOWN; * return View("ErrorMessage", ErrorMessage); */ var results = new RentalCartUpdateViewModel { Error = true, Message = "Something went wrong on our side." }; ModelState.AddModelError("", "There already exists an item in your rental cart during the same period"); return(Json(results)); } }