Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
            }
        }