public ActionResult Create(CheckoutModel checkout) { var items = new List <Item>(); try { var proxy = new ServiceProxyB2CClient(); 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 cartCacheClient = new MemcachedClient(clientConfiguration)) { checkout.Cart = cartCacheClient.Get <Cart>("Cart-" + currentUser.UserName); foreach (var item in checkout.Cart.Items) { checkout.Total = checkout.Total + item.Cantidad * (item.Producto.tipo_espectaculo.precio + item.Producto.tipo_hospedaje.precio + item.Producto.tipo_transporte.precio); } if (checkout.Cart == null) { return(RedirectToAction("Index", "Home")); } } items.AddRange(checkout.Cart.Items.Select(i => new Item { precio = i.Producto.tipo_espectaculo.precio + i.Producto.tipo_hospedaje.precio + i.Producto.tipo_transporte.precio, cantidad = i.Cantidad, id_prod = i.Producto.id_producto, nombre_prod = i.Producto.descripcion })); var orden = new Orden { precio = checkout.Total, estatus = EstatusOrden.VALIDACION, fecha_orden = DateTime.Now, id_cliente = checkout.CustomerId, item = items.ToArray() }; var orderId = proxy.CrearOrdenes(orden); if (orderId == null) { return(View()); } using (var cartCacheClient = new MemcachedClient(clientConfiguration)) { cartCacheClient.Remove("Cart-" + currentUser.UserName); } return(RedirectToAction("Index", "Orden", new { OrderId = orderId })); } catch { return(View()); } }
public ActionResult Pagar() { 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("127.0.0.1"), 32769)); ServiceProxyB2C.CrearOrdenResponse response = new ServiceProxyB2C.CrearOrdenResponse(); using (var client = new MemcachedClient(clientConfiguration)) { //consulto el cache del usuario logueado var cart = client.Get <Cart>("Cart-" + currentUser.UserName); if (cart != null) { var proxy = new ServiceProxyB2CClient(); // se crea una nueva orden Orden orden = new Orden(); // se deja el estado en validacion orden.estatus = EstatusOrden.VALIDACION; orden.fecha_orden = DateTime.Now; // se crea una nueva lista de items del carrito List <ServiceProxyB2C.Item> lstitem = new List <ServiceProxyB2C.Item>(); foreach (Models.Item item in cart.Items) { ServiceProxyB2C.Item itemorden = new ServiceProxyB2C.Item(); itemorden.id_prod = item.Producto.id_producto; // el servicio pide el nombre del producto, en el carrito no hay se coloca el nombre del espectaculo itemorden.nombre_prod = item.Producto.espectaculo; // en el servicio se pide el precio, se deja un valor fijo para ajustar modelo itemorden.precio = 100000; itemorden.cantidad = item.Cantidad; lstitem.Add(itemorden); } orden.item = lstitem.ToArray(); response = proxy.CrearOrdenes(orden); } else { response.id_orden = ""; response.estatus_orden = EstatusOrden.RECHAZADA; response.estatus_ordenSpecified = false; } } return(View("_Compra", response)); }