public ActionResult DeleteItem(int idProducto, int cantidad) { if (!ModelState.IsValid) { return(View("Index")); } //consulto el usuario logueado var currentUser = System.Web.HttpContext.Current.User as CustomPrincipal; if (currentUser == null) { return(RedirectToAction("Index", "Account")); } //Configuracion del MEMCACHED client var clientConfiguration = new MemcachedClientConfiguration { Protocol = MemcachedProtocol.Binary }; clientConfiguration.Servers.Add(new IPEndPoint(IPAddress.Parse("192.168.99.100"), 32768)); using (var memcachedclient = new MemcachedClient(clientConfiguration)) { //consulto el cache del usuario logueado var cart = memcachedclient.Get <Cart>("Cart-" + currentUser.UserName); if (cart == null) { return(View("Cart")); } var remove = new Item(); //Consulto el item en el carrito y le resto al cantidad si llega a cero lo elimino. foreach (var i in cart.Items.Where(i => i.Producto.id_producto == idProducto)) { if (i.Cantidad > cantidad) { i.Cantidad = i.Cantidad - cantidad; } else { remove = i; } } if (!remove.Equals(null)) { cart.Items.Remove(remove); } if (cart.Items.Count != 0) { memcachedclient.Store(StoreMode.Set, "Cart-" + currentUser.UserName, cart); } else { memcachedclient.Remove("Cart-" + currentUser.UserName); } return(View("Cart", cart)); } }
public ActionResult AddItem(int idProducto, int cantidad) { if (!ModelState.IsValid) { return(View("Index")); } //consulto el usuario logueado var currentUser = System.Web.HttpContext.Current.User as CustomPrincipal; if (currentUser == null) { return(RedirectToAction("Index", "Account")); } var clientConfiguration = new MemcachedClientConfiguration { Protocol = MemcachedProtocol.Binary }; clientConfiguration.Servers.Add(new IPEndPoint(IPAddress.Parse("192.168.99.100"), 32768)); using (var memcachedclient = new MemcachedClient(clientConfiguration)) { //consulto el cache del usuario logueado var cart = memcachedclient.Get <Cart>("Cart-" + currentUser.UserName); var proxy = new ServiceProxyB2CClient(); var producto = proxy.ConsultarProducto(TipoConsultaProducto.ID, idProducto.ToString()).First(); if (null == cart) { //si el carrito es vacio cree uno nuevo cart = new Cart { UserId = (int)currentUser.CustId, Items = new List <Item>() }; var item = new Item { Producto = producto, Cantidad = cantidad }; cart.Items.Add(item); memcachedclient.Store(StoreMode.Set, "Cart-" + currentUser.UserName, cart); } else { foreach (var i in cart.Items.Where(i => i.Producto.id_producto == idProducto)) { //Si existe un carrito busco el item y adiciono la cantidad i.Cantidad = i.Cantidad + cantidad; memcachedclient.Store(StoreMode.Set, "Cart-" + currentUser.UserName, cart); return(View("cart", cart)); } //si no existe el item en el carrito lo agrego a la coleccion y guardo el carro var item = new Item { Producto = producto, Cantidad = cantidad }; cart.Items.Add(item); memcachedclient.Store(StoreMode.Set, "Cart-" + currentUser.UserName, cart); } return(View("Cart", cart)); } }