From e5b699945c0ce5d2761bf3d458896e090b1046b5 Mon Sep 17 00:00:00 2001 From: andre00bejarano00vaca Date: Wed, 24 Dec 2025 10:03:32 -0400 Subject: [PATCH] arreglamos pujaaaaa, ahora se puede editar las pujas sin problemas, antes no guardaba los cambios de las puja solo actualizaba el socket, ahora los datos persisten --- .../controller/ContadorController.java | 38 +++++++++++++++++-- .../controller/PujaController.java | 3 +- .../repository/PujaRepository.java | 3 ++ .../fercoganbackend/service/PujaService.java | 8 +++- 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/example/fercoganbackend/controller/ContadorController.java b/src/main/java/com/example/fercoganbackend/controller/ContadorController.java index c082492..28cec8f 100644 --- a/src/main/java/com/example/fercoganbackend/controller/ContadorController.java +++ b/src/main/java/com/example/fercoganbackend/controller/ContadorController.java @@ -2,19 +2,28 @@ package com.example.fercoganbackend.controller; import com.example.fercoganbackend.component.ContadorWebSocketHandler; import com.example.fercoganbackend.dto.CorregirRequest; +import com.example.fercoganbackend.entity.Puja; import com.example.fercoganbackend.service.ContadorService; +import com.example.fercoganbackend.service.PujaService; +import jakarta.persistence.EntityNotFoundException; import org.springframework.web.bind.annotation.*; +import java.util.Optional; + @RestController @RequestMapping("/contador") public class ContadorController { private final ContadorService contadorService; private final ContadorWebSocketHandler webSocketHandler; + private final PujaService pujaService; - public ContadorController(ContadorService contadorService, - ContadorWebSocketHandler webSocketHandler) { + public ContadorController( + ContadorService contadorService, + ContadorWebSocketHandler webSocketHandler, + PujaService pujaService) { this.contadorService = contadorService; this.webSocketHandler = webSocketHandler; + this.pujaService = pujaService; } @PostMapping("/incrementar/{remate}/{lote}") @@ -46,20 +55,41 @@ public class ContadorController { return valor; } - @PostMapping("/corregir/{remate}/{lote}") + @PutMapping("/corregir/pujaid/{id}/remateid/{remate}/loteid/{lote}") public int corregirValor( + @PathVariable Long id, @PathVariable String remate, @PathVariable String lote, @RequestBody CorregirRequest request) { + // Convertir IDs de String a Long + Long remateId = Long.valueOf(remate); + Long loteId = Long.valueOf(lote); + + // Buscar la puja correspondiente por lote y remate + Puja puja = pujaService.findForIdAndLoteAndRemate(id, loteId, remateId) + .orElseThrow(() -> + new EntityNotFoundException( + "No existe puja para remate " + remate + " y lote " + lote + ) + ); + + // Actualizar el monto de la puja y persistir + puja.setMonto((double) request.getNuevoValor()); + pujaService.save(puja); + + // Actualizar contador en memoria String roomKey = remate + "-" + lote; int nuevoValor = request.getNuevoValor(); - contadorService.setContador(roomKey, nuevoValor); + + // Notificar a clientes vía WebSocket webSocketHandler.broadcastToRoom(remate, lote, String.valueOf(nuevoValor)); + // Retornar el nuevo valor return nuevoValor; } + } \ No newline at end of file diff --git a/src/main/java/com/example/fercoganbackend/controller/PujaController.java b/src/main/java/com/example/fercoganbackend/controller/PujaController.java index 4e5dbc3..9ca2e51 100644 --- a/src/main/java/com/example/fercoganbackend/controller/PujaController.java +++ b/src/main/java/com/example/fercoganbackend/controller/PujaController.java @@ -7,6 +7,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Optional; @RestController @RequestMapping("/api/pujas") @@ -38,7 +39,7 @@ public class PujaController { //get coincidir con lote y remate @GetMapping("/loteyremate/{loteId}/{remateId}") - public List getForLoteAndRemate(@PathVariable Long loteId,@PathVariable Long remateId){ + public List getForLoteAndRemate(@PathVariable Long loteId, @PathVariable Long remateId){ return pujaService.findForLoteAndRemate(loteId,remateId); } diff --git a/src/main/java/com/example/fercoganbackend/repository/PujaRepository.java b/src/main/java/com/example/fercoganbackend/repository/PujaRepository.java index 32ec82f..75182bc 100644 --- a/src/main/java/com/example/fercoganbackend/repository/PujaRepository.java +++ b/src/main/java/com/example/fercoganbackend/repository/PujaRepository.java @@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.Query; import java.time.LocalDateTime; import java.util.List; +import java.util.Optional; public interface PujaRepository extends JpaRepository { @@ -14,6 +15,8 @@ public interface PujaRepository extends JpaRepository { List findByLote_IdAndLote_Remate_Id(Long loteId, Long remateId); + Optional findByIdAndLote_IdAndLote_Remate_Id(Long id, Long loteId, Long remateId); + List findByLote_IdAndLote_Remate_IdAndFechaAfter( Long loteId, Long remateId, diff --git a/src/main/java/com/example/fercoganbackend/service/PujaService.java b/src/main/java/com/example/fercoganbackend/service/PujaService.java index be1615f..be23227 100644 --- a/src/main/java/com/example/fercoganbackend/service/PujaService.java +++ b/src/main/java/com/example/fercoganbackend/service/PujaService.java @@ -40,8 +40,12 @@ public class PujaService { return pujaRepository.findByLote_Remate_Id(id); } - public List findForLoteAndRemate(Long loteId, Long remateId){ - return pujaRepository.findByLote_IdAndLote_Remate_Id(loteId,remateId); + public List findForLoteAndRemate( Long loteId, Long remateId){ + return pujaRepository.findByLote_IdAndLote_Remate_Id( loteId,remateId); + } + + public Optional findForIdAndLoteAndRemate(Long Id, Long loteId, Long remateId){ + return pujaRepository.findByIdAndLote_IdAndLote_Remate_Id( Id, loteId,remateId); } public List findForLoteAndRemateAndDate(Long loteId, Long remateId, LocalDateTime fecha){