//========================================================== //========================================================== public ActionResult RemoveProductFromCart(int id) { ShoppingCart cart = ShoppingCartCreateOrLoad(); if (cart != null && cart.ShoppingCartsProducts.Count > 0) { ShoppingCartsProduct removeProduct = db.ShoppingCartsProducts.Find(id); db.ShoppingCartsProducts.Remove(removeProduct); db.SaveChanges(); } return(new EmptyResult()); }
//========================================================== //========================================================== public ActionResult EditProductInCart(int?id, int?quant) { if (id != null && quant != null && quant > 0) { ShoppingCart cart = ShoppingCartCreateOrLoad(); // проверка корзины есть ли в ней товар ShoppingCartsProduct existProductInCart = cart.ShoppingCartsProducts.Where(p => p.Id == id).SingleOrDefault(); if (existProductInCart != null) { // если продукт в корзине есть - редактируем existProductInCart.Quantity = quant.Value; existProductInCart.DateAdded = DateTime.Now; db.Entry(existProductInCart).State = EntityState.Modified; db.SaveChanges(); } } //return new EmptyResult(); return(RedirectToAction("Index")); }
//========================================================== //========================================================== public ActionResult AddToCard(int?id, int?quant) { if (id != null && quant != null && quant > 0) { ShoppingCart cart = ShoppingCartCreateOrLoad(); ShopProduct product = db.ShopProducts.Find(id); if (product != null) { // проверка корзины - нет ли в ней этого товара добавленного ранее ShoppingCartsProduct existProductInCart = cart.ShoppingCartsProducts.Where(p => p.ShopProduct.Id == product.Id).SingleOrDefault(); if (existProductInCart == null) { // если продукта в корзине нет - добавляем ShoppingCartsProduct addingProduct = new ShoppingCartsProduct { ShopProduct = product, Quantity = quant.Value, ShoppingCart = cart, DateAdded = DateTime.Now }; cart.ShoppingCartsProducts.Add(addingProduct); db.Entry(cart).State = EntityState.Modified; db.SaveChanges(); } else { // если продукта в корзине есть - редактируем existProductInCart.Quantity = existProductInCart.Quantity + quant.Value; existProductInCart.DateAdded = DateTime.Now; db.Entry(existProductInCart).State = EntityState.Modified; db.SaveChanges(); } } } return(RedirectToAction("_ShoppingCart")); }
//========================================================== //========================================================== private ShoppingCart ShoppingCartCreateOrLoad() { if (HttpContext.User.Identity.IsAuthenticated) { string currentUserId = HttpContext.User.Identity.GetUserId(); ApplicationUserManager userManager = new ApplicationUserManager(new UserStore <ApplicationUser>(db)); ApplicationUser currentUser = userManager.FindById(currentUserId); ShoppingCart cardUser = ShoppingCartFindByUserId(currentUser.Id); if (cardUser == null) { // создаем корзину для пользователя cardUser = ShoppingCartCreateForUser(currentUser.Id); cardUser.ShoppingCartsProducts = new List <ShoppingCartsProduct>(); // проверяем наличие анонимной корзины if (HttpContext.Request.Cookies["ShoppingCartKeyId"] != null) { ShoppingCart cardAnonym = ShoppingCartFind(HttpContext.Request.Cookies["ShoppingCartKeyId"].Value); if (cardAnonym != null && cardAnonym.ShoppingCartsProducts != null && cardAnonym.ShoppingCartsProducts.Count > 0) { // переносим товары из анонимной корзины в корзину пользователя foreach (var item in cardAnonym.ShoppingCartsProducts) { cardUser.ShoppingCartsProducts.Add(item); } db.Entry(cardUser).State = EntityState.Modified; // удаляем анонимную корзину db.ShoppingCartsProducts.RemoveRange(cardAnonym.ShoppingCartsProducts); db.ShoppingCarts.Remove(cardAnonym); DeleteCookie(); db.SaveChanges(); } } return(cardUser); } else { // проверяем наличие анонимной корзины if (HttpContext.Request.Cookies["ShoppingCartKeyId"] != null) { ShoppingCart cardAnonym = ShoppingCartFind(HttpContext.Request.Cookies["ShoppingCartKeyId"].Value); if (cardAnonym != null && cardAnonym.ShoppingCartsProducts != null && cardAnonym.ShoppingCartsProducts.Count > 0) { // если пользовательская корзина пуста а анонимная имеет товары, тогда if (cardUser.ShoppingCartsProducts == null || cardUser.ShoppingCartsProducts.Count == 0) { // переносим товары из анонимной корзины в корзину пользователя cardUser.ShoppingCartsProducts = new List <ShoppingCartsProduct>(); foreach (var item in cardAnonym.ShoppingCartsProducts) { cardUser.ShoppingCartsProducts.Add(item); } db.Entry(cardUser).State = EntityState.Modified; // удаляем анонимную корзину db.ShoppingCartsProducts.RemoveRange(cardAnonym.ShoppingCartsProducts); db.ShoppingCarts.Remove(cardAnonym); db.SaveChanges(); DeleteCookie(); return(cardUser); } else { // если обе корзины не пустые foreach (var item in cardAnonym.ShoppingCartsProducts) { ShoppingCartsProduct exist = cardUser.ShoppingCartsProducts .Where(p => p.ShopProduct.Id == item.ShopProduct.Id) .SingleOrDefault(); if (exist != null) { exist.Quantity = exist.Quantity + item.Quantity; exist.DateAdded = DateTime.Now; } else { cardUser.ShoppingCartsProducts.Add(item); } } db.Entry(cardUser).State = EntityState.Modified; // удаляем анонимную корзину db.ShoppingCartsProducts.RemoveRange(cardAnonym.ShoppingCartsProducts); db.ShoppingCarts.Remove(cardAnonym); db.SaveChanges(); DeleteCookie(); return(cardUser); } } } } return(cardUser); } else { if (HttpContext.Request.Cookies["ShoppingCartKeyId"] != null) { return(ShoppingCartFind(HttpContext.Request.Cookies["ShoppingCartKeyId"].Value)); } else { return(ShoppingCartCreate()); } } //return null; }