cargando carrito desde backend

This commit is contained in:
2025-10-29 23:30:33 +01:00
parent ae2904aa71
commit feff9ee94a
23 changed files with 848 additions and 183 deletions

View File

@ -9,6 +9,7 @@ import jakarta.servlet.http.HttpServletRequest;
import org.springframework.context.MessageSource;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import com.imprimelibros.erp.common.Utils;
import com.imprimelibros.erp.direcciones.Direccion;
@ -19,9 +20,8 @@ import java.security.Principal;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import com.imprimelibros.erp.cart.dto.UpdateCartRequest;
@Controller
@RequestMapping("/cart")
@ -56,6 +56,9 @@ public class CartController {
"cart.shipping.errors.units-error",
"cart.shipping.ud",
"cart.shipping.uds",
"cart.shipping.send-in-palets",
"cart.shipping.send-in-palets.info",
"cart.shipping.tipo-envio",
"app.yes",
"app.aceptar",
"app.cancelar");
@ -63,12 +66,16 @@ public class CartController {
Map<String, String> translations = translationService.getTranslations(locale, keys);
model.addAttribute("languageBundle", translations);
var items = service.listItems(Utils.currentUserId(principal), locale);
Long userId = Utils.currentUserId(principal);
Cart cart = service.getOrCreateActiveCart(userId);
var items = service.listItems(userId, locale);
model.addAttribute("items", items);
var summary = service.getCartSummary(items, locale);
var summary = service.getCartSummary(cart, locale);
model.addAttribute("cartSummary", summary);
model.addAttribute("cartId", service.getOrCreateActiveCart(Utils.currentUserId(principal)));
model.addAttribute("cart", cart);
return "imprimelibros/cart/cart"; // crea esta vista si quieres (tabla simple)
}
@ -126,6 +133,7 @@ public class CartController {
@GetMapping("/get-address/{id}")
public String getDireccionCard(@PathVariable Long id, @RequestParam(required = false) Long presupuestoId,
@RequestParam(required = false) Integer unidades,
@RequestParam(required = false) Integer isPalets,
Model model, Locale locale) {
Direccion dir = direccionService.findById(id)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
@ -133,18 +141,28 @@ public class CartController {
dir.getPais().getKeyword(), locale));
model.addAttribute("presupuestoId", presupuestoId);
model.addAttribute("unidades", unidades);
model.addAttribute("isPalets", isPalets);
model.addAttribute("direccion", dir);
return "imprimelibros/direcciones/direccionCard :: direccionCard(direccion=${direccion})";
}
@PostMapping("/update/{id}")
public String postMethodName(@PathVariable Long id, @RequestBody String entity) {
@PostMapping(value = "/update/{id}", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String updateCart(@PathVariable Long id, UpdateCartRequest updateRequest, Model model, Locale locale) {
try {
service.updateCart(id, updateRequest);
var cartSummary = service.getCartSummary(service.getCartById(id), locale);
model.addAttribute("cartSummary", cartSummary);
return "imprimelibros/cart/_cartSummary :: cartSummary(summary=${cartSummary})";
} catch (Exception e) {
model.addAttribute("errorMessage", messageSource.getMessage("cart.errors.update-cart", new Object[]{e.getMessage()}, locale));
return "/cart"; // templates/error/500.html
}
return entity;
}
}