From 5b872f51e83c7bd4c71ad3d7142eac44febdf08a Mon Sep 17 00:00:00 2001
From: Hugo <hugo.cubino@estudiantes.uva.es>
Date: Sun, 3 Nov 2024 14:15:58 +0100
Subject: [PATCH] Arreglado el DELETE de reserva

---
 .../Controllers/BookingController.java        | 33 +++++++++++++++++--
 .../Repositories/BookingRepository.java       |  7 ++++
 2 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/Controllers/BookingController.java b/java/roomBooking/src/main/java/com/uva/roomBooking/Controllers/BookingController.java
index e3c13ce..7e5fe94 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/Controllers/BookingController.java
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/Controllers/BookingController.java
@@ -8,6 +8,10 @@ import com.uva.roomBooking.Repositories.BookingRepository;
 import com.uva.roomBooking.Repositories.RoomRepository;
 import com.uva.roomBooking.Repositories.UserRepository;
 
+import jakarta.transaction.Transactional;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -53,9 +57,32 @@ public class BookingController {
         return bookingRepository.save(booking);
     }
 
-    @DeleteMapping("/{id}")
-    public void deleteBooking(@PathVariable Integer id) {
-        bookingRepository.deleteById(id);
+    @GetMapping("/{id}")
+    public Booking getBookingById(@PathVariable Integer id) {
+        return bookingRepository.findById(id)
+                .orElseThrow(() -> new RuntimeException("Booking not found"));
     }
 
+
+    @DeleteMapping("/{id}")
+    @Transactional
+    public ResponseEntity<String> deleteBooking(@PathVariable Integer id) {
+        try {
+            if (!bookingRepository.existsById(id)) {
+                return ResponseEntity.status(HttpStatus.NOT_FOUND)
+                    .body("Booking not found with id: " + id);
+            }
+            
+            bookingRepository.deleteBookingById(id); 
+            
+            return ResponseEntity.ok("Booking deleted successfully");
+        } catch (Exception e) {
+            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
+                .body("Error deleting booking: " + e.getMessage());
+        }
+    }
 }
+
+    
+
+
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java b/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java
index a010a3a..54bbc5c 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java
@@ -7,6 +7,7 @@ import java.time.LocalDate;
 import java.util.List;
 
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 
@@ -15,4 +16,10 @@ public interface BookingRepository extends JpaRepository<Booking, Integer> {
     @Query("SELECT b FROM Booking b WHERE b.roomId.id = ?1 AND b.startDate < ?2 AND b.endDate > ?3")
     List<Booking> findByRoomIdAndDateRange(@Param("roomId") int roomId, @Param("startDate") LocalDate startDate,
             @Param("endDate") LocalDate endDate);
+
+    @Modifying
+    @Query("DELETE FROM Booking b WHERE b.id = :id")
+    void deleteBookingById(@Param("id") Integer id);
+
+    
 }
-- 
GitLab