trabajando en obtener las direcciones para guardar

This commit is contained in:
2025-11-07 20:11:23 +01:00
parent 90239be31e
commit 7254c8f11b
7 changed files with 238 additions and 15 deletions

View File

@ -14,11 +14,13 @@ import java.util.Objects;
import com.imprimelibros.erp.presupuesto.classes.PresupuestoFormatter;
import com.imprimelibros.erp.presupuesto.dto.Presupuesto;
import com.imprimelibros.erp.presupuesto.service.PresupuestoService;
import com.imprimelibros.erp.cart.dto.CartDireccionRepository;
import com.imprimelibros.erp.cart.dto.DireccionCardDTO;
import com.imprimelibros.erp.cart.dto.DireccionShipment;
import com.imprimelibros.erp.cart.dto.UpdateCartRequest;
import com.imprimelibros.erp.common.Utils;
import com.imprimelibros.erp.direcciones.Direccion;
import com.imprimelibros.erp.direcciones.DireccionService;
import com.imprimelibros.erp.externalApi.skApiClient;
import com.imprimelibros.erp.pedido.PedidoService;
@ -36,12 +38,13 @@ public class CartService {
private final DireccionService direccionService;
private final skApiClient skApiClient;
private final PedidoService pedidoService;
private final PresupuestoService presupuestoService;
public CartService(CartRepository cartRepo, CartItemRepository itemRepo,
CartDireccionRepository cartDireccionRepo, MessageSource messageSource,
PresupuestoFormatter presupuestoFormatter, PresupuestoRepository presupuestoRepo,
Utils utils, DireccionService direccionService, skApiClient skApiClient,
PedidoService pedidoService) {
PedidoService pedidoService, PresupuestoService presupuestoService) {
this.cartRepo = cartRepo;
this.itemRepo = itemRepo;
this.cartDireccionRepo = cartDireccionRepo;
@ -51,6 +54,7 @@ public class CartService {
this.direccionService = direccionService;
this.skApiClient = skApiClient;
this.pedidoService = pedidoService;
this.presupuestoService = presupuestoService;
}
@ -411,6 +415,72 @@ public class CartService {
cartDireccionRepo.deleteByDireccionIdAndCartStatus(direccionId, Cart.Status.ACTIVE);
}
@Transactional
public Long crearPedido(Long cartId) {
Cart cart = this.getCartById(cartId);
List<CartItem> items = cart.getItems();
List<Map<String, Object>> presupuestoRequests = new ArrayList<>();
for (CartItem item : items) {
Presupuesto p = item.getPresupuesto();
Map<String, Object> data_to_send = presupuestoService.toSkApiRequest(p, true);
Map<String, Object> result = skApiClient.savePresupuesto(data_to_send);
if (result.containsKey("error")) {
System.out.println("Error al guardar presupuesto en SK: " + result.get("error"));
// decide si seguir con otros items o abortar:
// continue; o bien throw ...
continue;
}
Object dataObj = result.get("data");
if (!(dataObj instanceof Map<?, ?> dataRaw)) {
System.out.println("Formato inesperado de 'data' en savePresupuesto: " + result);
continue;
}
@SuppressWarnings("unchecked")
Map<String, Object> dataMap = (Map<String, Object>) dataRaw;
presupuestoRequests.add(dataMap);
}
// Aquí ya tienes todos los presupuestos SK en presupuestoRequests
// TODO: crear el pedido de verdad y devolver su ID
// Long pedidoId = pedidoService.crearPedidoDesdePresupuestos(cart,
// presupuestoRequests);
// return pedidoId;
return 1L;
}
public List<Map<String, Object>> getDireccionesPresupuesto(Cart cart, Presupuesto presupuesto) {
List<CartDireccion> direcciones = cart.getDirecciones().stream()
.filter(d -> d.getPresupuesto() != null && d.getPresupuesto().getId().equals(presupuesto.getId()))
.toList();
if(cart.getOnlyOneShipment()){
direcciones = direcciones.stream().limit(1).toList();
Direccion dir = direcciones.size() > 0 ? direcciones.get(0).getDireccion() : null;
if(dir != null){
asdaslkdjasldjaslkdjaslkdjaslkdjaslkjljaslkd
}
}
List<Map<String, Object>> resultado = new ArrayList<>();
for (CartDireccion cd : direcciones) {
Map<String, Object> dirMap = new HashMap<>();
dirMap.put("direccion", cd.getDireccion());
dirMap.put("isPalets", cd.getIsPalets());
dirMap.put("unidades", cd.getUnidades());
resultado.add(dirMap);
}
return resultado;
}
/***************************************
* MÉTODOS PRIVADOS
***************************************/
@ -454,4 +524,6 @@ public class CartService {
return result;
}
}