public ActionResult AddToOrderBag(FormCollection collection, int productID, int productOrderID, int?page, Guid?memberID) { if (!memberID.HasValue) { memberID = (Guid)Membership.GetUser().ProviderUserKey; } MemberOrder memberOrder = new MemberOrder(); if (_entities.MemberOrders.Where(a => a.ProductOrderID == productOrderID && a.MemberID == memberID.Value && a.OrderStatusID == 1).Any()) { memberOrder = _entities.MemberOrders.Single(a => a.ProductOrderID == productOrderID && a.MemberID == memberID.Value && a.OrderStatusID == 1); } else { memberOrder.MemberID = memberID.Value; memberOrder.ProductOrderID = productOrderID; memberOrder.OrderStatusID = 1; } memberOrder.LatestOrderDateTime = DateTime.Now.ToUniversalTime().AddHours(8); try { int memberOrderDetailCounts = RemoveMemberOrderDetailsFromMemberOrder(productID, memberOrder); AddToMemberOrderDetailForProduct(collection, memberOrder, productID); _entities.SaveChanges(); if (!ModelState.IsValid) { if (memberOrderDetailCounts > 0 && memberOrder.MemberOrderDetails.Count == 0) { _entities.DeleteObject(memberOrder); _entities.SaveChanges(); return(RedirectToAction("ProductList", new { productOrderID = productOrderID, page = page })); } else if (memberOrderDetailCounts > 0) { return(RedirectToAction("Details", new { memberOrderID = memberOrder.ID, orderStatusID = memberOrder.OrderStatusID, page = page })); } throw new Exception(); } if (memberOrder.ID == 0) { _entities.AddToMemberOrders(memberOrder); memberOrder = (from r in _entities.MemberOrders where r.ProductOrderID == productOrderID select r).OrderByDescending(x => x.ID).First(); } else { UpdateModel(memberOrder, "MemberOrder"); } _entities.SaveChanges(); return(RedirectToAction("Details", new { memberOrderID = memberOrder.ID, orderStatusID = memberOrder.OrderStatusID, page = page })); } catch { List <ProductDetail> productDetails = _entities.ProductDetails.Where(a => a.ProductID == productID && a.UpdateDate > SMCHSGManager.Controllers.ProductController.updateTime && (a.UnitsInStock == null || a.UnitsInStock != null && a.UnitsInStock > 0)).OrderBy(a => a.ID).ToList(); List <string> productQuantities = GetProductDetailQuantities(productID, productOrderID, memberID.Value, productDetails); ViewData["productQuantities"] = productQuantities.ToArray(); var viewModel = new ProductDetailViewModel { Sizes = productDetails.Select(a => a.SizeDescription).ToList(), Product = _entities.Products.Single(a => a.ID == productID), }; viewModel.ProductDiscount = viewModel.Product.ProductDiscounts.Where(a => a.DateTo >= DateTime.Today).FirstOrDefault(); viewModel.ReadPrice = GetProductPriceAfterDiscount(viewModel.Product, 1); if (viewModel.Product.ProductUploadFiles.Count == 0) { UploadFile upload = _entities.UploadFiles.Single(a => a.ID == 1276); ProductUploadFile productUploadFile = new ProductUploadFile(); productUploadFile.UploadFile = upload; viewModel.Product.ProductUploadFiles.Add(productUploadFile); } return(View(viewModel)); } }