public ActionResult SaldoDisponible()
        {
            var asociado = db.tb_asociado.FirstOrDefault(a => a.correo_electronico == User.Identity.Name);
            var cart = ShoppingCart.GetCart(this.HttpContext);
            //var previousOrder = db.tb_factura.FirstOrDefault(x => x.usuario == User.Identity.Name);
            var compra = new ProcesarCompra();
            compra.asociado = asociado;
            compra.montoCompra = cart.GetTotal();
            compra.saldo = (decimal) asociado.monto_ahorro - cart.GetTotal();

            if (asociado != null)
                return View(compra);
            else
                return View();
        }
        public async Task<ActionResult> SaldoDisponible(FormCollection values)
        {
            var order = new tb_factura();
            var asociado = db.tb_asociado.FirstOrDefault(a => a.correo_electronico == User.Identity.Name);
            var cart = ShoppingCart.GetCart(this.HttpContext);
            //var previousOrder = db.tb_factura.FirstOrDefault(x => x.usuario == User.Identity.Name);
            var compra = new ProcesarCompra();
            compra.asociado = asociado;
            compra.montoCompra = cart.GetTotal();
            compra.saldo = (decimal)asociado.monto_ahorro - cart.GetTotal();
            try
            {
                order.cliente_asociado = asociado.id_asociado;
                order.id_direccion = 1;
                order.id_estado = 1;
                order.costo_total = cart.GetTotal();
                order.fecha = DateTime.Now;
                order.usuario = asociado.correo_electronico;

                //Guardar Orden
                db.tb_factura.Add(order);

                asociado.monto_ahorro = (decimal)(asociado.monto_ahorro - order.costo_total);
                await db.SaveChangesAsync();
                //Procesar la orden
                order = cart.CreateOrder(order);


                return RedirectToAction("Completar",
                    new { id = order.id_factura });

            }
            catch(Exception e)
            {
                //Invalid - redisplay with errors
                compra.Message = "Hubo un error en la compra: " + e.Message;
                return View(compra);
            }
        }