public ActionResult UpdateDeliveryDetails(SaveCartViewModel model) { string userId = User.Identity.GetUserId(); ShoppingCart sessionCart = GetCartFromSession(userId); FreeMarketObject result; TimeSpan startTime = new TimeSpan(8, 0, 0); TimeSpan endTime = new TimeSpan(17, 0, 0); if (model.DeliveryOptions == null || model.DeliveryOptions.SelectedDeliveryType == null) { ModelState.AddModelError("", "Please select a delivery option"); } if (ModelState.IsValid) { if (!(model.prefDeliveryDateTime.Value.TimeOfDay > startTime && model.prefDeliveryDateTime.Value.TimeOfDay < endTime && model.prefDeliveryDateTime.Value > DateTime.Today && (model.prefDeliveryDateTime.Value.DayOfWeek == DayOfWeek.Monday || model.prefDeliveryDateTime.Value.DayOfWeek == DayOfWeek.Tuesday || model.prefDeliveryDateTime.Value.DayOfWeek == DayOfWeek.Wednesday || model.prefDeliveryDateTime.Value.DayOfWeek == DayOfWeek.Thursday || model.prefDeliveryDateTime.Value.DayOfWeek == DayOfWeek.Friday))) { model.SetAddressNameOptions(userId, model.SelectedAddress); return(View("CheckoutDeliveryDetails", model)); } sessionCart.UpdateDeliveryDetails(model); result = new FreeMarketObject { Result = FreeMarketResult.NoResult }; if (model.AddressName != "Current") { result = CustomerAddress.AddOrUpdateAddress(model, userId); } AuditUser.LogAudit(27, string.Format("Order Number: {0}", sessionCart.Order.OrderNumber), User.Identity.GetUserId()); if (result.Result == FreeMarketResult.Success) { TempData["message"] = result.Message; } else { TempData["errorMessage"] = result.Message; } if (Request.IsAjaxRequest()) { return(JavaScript("window.location.reload();")); } else { return(RedirectToAction("ChoosePaymentOption", "ShoppingCart")); } } model.SetAddressNameOptions(userId, model.SelectedAddress); decimal localCourierCost = sessionCart.CalculateLocalCourierFeeAdhoc(int.Parse(model.Address.AddressPostalCode)); decimal courierCost = sessionCart.CalculateCourierFeeAdhoc(int.Parse(model.Address.AddressPostalCode)); decimal postOfficeCost = sessionCart.CalculatePostalFee(); model.SetDeliveryOptions(sessionCart.Order, /*localCourierCost,*/ courierCost, postOfficeCost); model.SetTextBlocks(); if (Request.IsAjaxRequest()) { return(PartialView("_SaveCartModal", model)); } else { return(View("CheckoutDeliveryDetails", model)); } }
public ActionResult UpdateCart(ShoppingCart cart, string returnUrl) { // Prepare string userId = User.Identity.GetUserId(); bool anonymousUser = (userId == null); ShoppingCart sessionCart = GetCartFromSession(userId); ShoppingCartViewModel model; if (cart.Order.OrderStatus == "Locked") { TempData["errorMessage"] = "Your cart is locked because you are in the process of checking out. Complete or cancel your checkout process."; return(JavaScript("window.location = window.location.href;")); } if (ModelState.IsValid) { // Prepare FreeMarketObject resultRemove = new FreeMarketObject(); FreeMarketObject resultQuantity = new FreeMarketObject(); // Update Selected Property sessionCart.UpdateSelectedProperty(cart, false); // Remove selected Items List <OrderDetail> selectedItems = cart.Body.OrderDetails .Where(c => c.Selected || c.Quantity <= 0) .ToList(); if (selectedItems.Count > 0) { foreach (OrderDetail detail in selectedItems) { resultRemove = sessionCart.RemoveItem(detail.ItemNumber, detail.ProductNumber, detail.SupplierNumber, detail.SizeType, userId); } } // Update Quantity List <OrderDetail> changedItems = cart.Body.OrderDetails .Where(c => !c.Selected && c.Quantity > 0) .ToList(); if (changedItems.Count > 0) { resultQuantity = sessionCart.UpdateQuantities(changedItems); } sessionCart.Save(); sessionCart.UpdateSelectedProperty(cart, true); if (string.IsNullOrEmpty(resultQuantity.Message)) { TempData["message"] = "Cart has been updated."; } else { TempData["errorMessage"] = resultQuantity.Message; } model = new ShoppingCartViewModel { Cart = sessionCart, ReturnUrl = returnUrl }; return(RedirectToAction("Cart", "ShoppingCart")); } model = new ShoppingCartViewModel { Cart = sessionCart, ReturnUrl = returnUrl }; return(View("Cart", model)); }