using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using WebVentaCoche.DataBase; using WebVentaCoche.Helpers; using WebVentaCoche.Models; using System.Linq; namespace WebVentaCoche.Controllers { public class CartController : Controller { private readonly ApplicationDbContext _context; public CartController(ApplicationDbContext context) { _context = context; } // GET: /Cart/Index // Muestra la lista de productos del carrito y el total. public IActionResult Index() { // Diccionario de IDs -> Cantidades desde sesión (o cualquier fuente) var itemsDict = CartSessionHelper.GetCartItems(HttpContext.Session); // Crear tu ViewModel var viewModel = new CartViewModel(); foreach (var kvp in itemsDict) { var productId = kvp.Key; var amount = kvp.Value; var product = _context.Products.Find(productId); if (product != null) { viewModel.Products.Add(new CartProduct { Product = product, Amount = amount }); } } return View(viewModel); } // POST: /Cart/AddProductToCart // Añade el producto al carrito y devuelve un JSON con el nuevo contador [HttpPost] public IActionResult AddProductToCart(int id) { var product = _context.Products.Find(id); if (product == null) { return NotFound(); } // Añade a la sesión CartSessionHelper.AddToCart(HttpContext.Session, id); // Devuelve la cuenta actualizada para actualizar el badge var productIds = CartSessionHelper.GetCartItems(HttpContext.Session); int count = productIds.Count; return Json(new { success = true, cartCount = count }); } // POST: /Cart/Remove // Elimina un producto según su ID [HttpPost] public IActionResult Remove(int id) { CartSessionHelper.RemoveFromCart(HttpContext.Session, id); return RedirectToAction("Index"); } // POST: /Cart/Clear // Vacía todo el carrito (la sesión) [HttpPost] public IActionResult Clear() { CartSessionHelper.ClearCart(HttpContext.Session); return RedirectToAction("Index"); } // GET: /Cart/Checkout // (Opcional) Muestra un formulario o datos para la compra/pago. public IActionResult Checkout() { return View(); } } }