diff --git a/src/main/java/com/imprimelibros/erp/cart/CartController.java b/src/main/java/com/imprimelibros/erp/cart/CartController.java index 8917d05..ddbbfd0 100644 --- a/src/main/java/com/imprimelibros/erp/cart/CartController.java +++ b/src/main/java/com/imprimelibros/erp/cart/CartController.java @@ -5,13 +5,20 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import com.imprimelibros.erp.users.UserDetailsImpl; + +import jakarta.servlet.http.HttpServletRequest; + import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.imprimelibros.erp.users.User; + +import org.springframework.boot.autoconfigure.graphql.GraphQlProperties.Http; +import org.springframework.http.ResponseEntity; import org.springframework.security.core.Authentication; import java.security.Principal; import java.util.Locale; +import java.util.Map; @Controller @RequestMapping("/cart") @@ -62,8 +69,15 @@ public class CartController { /** Añadir presupuesto con ruta REST (opcional) */ @PostMapping("/add/{presupuestoId}") - public String addPath(@PathVariable Long presupuestoId, Principal principal) { + public Object addPath(@PathVariable Long presupuestoId, Principal principal, HttpServletRequest request) { service.addPresupuesto(currentUserId(principal), presupuestoId); + boolean isAjax = "XMLHttpRequest".equals(request.getHeader("X-Requested-With")); + if (isAjax) { + // Responder 200 con la URL a la que quieres ir + return ResponseEntity.ok( + Map.of("redirect", "/cart")); + } + // Navegación normal: redirección server-side return "redirect:/cart"; } diff --git a/src/main/java/com/imprimelibros/erp/cart/CartService.java b/src/main/java/com/imprimelibros/erp/cart/CartService.java index b149770..bd85a5a 100644 --- a/src/main/java/com/imprimelibros/erp/cart/CartService.java +++ b/src/main/java/com/imprimelibros/erp/cart/CartService.java @@ -70,7 +70,7 @@ public class CartService { elemento.put("cartItemId", item.getId()); resultados.add(elemento); } - System.out.println("Cart items: " + resultados); + //System.out.println("Cart items: " + resultados); return resultados; } diff --git a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/wizard.js b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/wizard.js index da87167..1924055 100644 --- a/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/wizard.js +++ b/src/main/resources/static/assets/js/pages/imprimelibros/presupuestador/wizard.js @@ -274,13 +274,16 @@ export default class PresupuestoWizard { $('.add-cart-btn').on('click', async () => { const success = await this.#guardarPresupuesto(); if (success) { - await $.ajax({ + const res = await $.ajax({ url: `/cart/add/${this.opts.presupuestoId}`, method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, + headers: { 'Content-Type': 'application/json' } }); + + // Si el backend devuelve { redirect: "/cart" } + if (res?.redirect) { + window.location.assign(res.redirect); // o replace() + } } }); } @@ -843,7 +846,7 @@ export default class PresupuestoWizard { const errors = xhr.responseJSON; if (errors && typeof errors === 'object') { this.interior_alert.find('#form-errors-alert-list').append(`
  • ${errors.message}
  • `); - + } console.error("Error al obtener los gramajes de interior: ", xhr.responseText); }); diff --git a/src/main/resources/templates/imprimelibros/cart/_cartItem.html b/src/main/resources/templates/imprimelibros/cart/_cartItem.html index 5cff9f3..46745b2 100644 --- a/src/main/resources/templates/imprimelibros/cart/_cartItem.html +++ b/src/main/resources/templates/imprimelibros/cart/_cartItem.html @@ -53,14 +53,15 @@
    - +
    - + \ No newline at end of file