From ab5af35797696ee0666e67c967c610fcf9b16d69 Mon Sep 17 00:00:00 2001
From: Hugo <hugo.cubino@estudiantes.uva.es>
Date: Sat, 19 Oct 2024 17:19:05 +0200
Subject: [PATCH] Arreglado error

---
 .../Controllers/BookingController.java        |  1 +
 .../Exceptions/GlobalExceptionHandler.java    |  2 +-
 .../com/uva/roomBooking/Models/Booking.java   | 30 ++++++++++---------
 .../com/uva/roomBooking/Models/Hotel.java     |  2 +-
 .../java/com/uva/roomBooking/Models/Room.java |  8 ++---
 .../Repositories/RoomRepository.java          | 22 +++++++-------
 6 files changed, 35 insertions(+), 30 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 5677526..8437695 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
@@ -9,6 +9,7 @@ import java.util.List;
 
 @RestController
 @RequestMapping("/bookings")
+@CrossOrigin(origins = "http://localhost:4200")
 public class BookingController {
 
     private final BookingRepository bookingRepository;
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/Exceptions/GlobalExceptionHandler.java b/java/roomBooking/src/main/java/com/uva/roomBooking/Exceptions/GlobalExceptionHandler.java
index 4928a37..ba79c4e 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/Exceptions/GlobalExceptionHandler.java
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/Exceptions/GlobalExceptionHandler.java
@@ -1,4 +1,4 @@
-package com.uva.roomBooking.exceptions;
+package com.uva.roomBooking.Exceptions;
 
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/Models/Booking.java b/java/roomBooking/src/main/java/com/uva/roomBooking/Models/Booking.java
index 573bde8..5b6dc29 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/Models/Booking.java
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/Models/Booking.java
@@ -2,8 +2,6 @@ package com.uva.roomBooking.Models;
 
 import java.util.Date;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
 import jakarta.persistence.Basic;
 import jakarta.persistence.CascadeType;
 import jakarta.persistence.Column;
@@ -25,7 +23,7 @@ public class Booking {
     @Basic(optional = false)
     private int id;
     @JoinColumn(name = "user_id", referencedColumnName = "id")
-    @ManyToOne(optional = false, fetch = FetchType.LAZY)
+    @ManyToOne(optional = false, fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
     private User userId;
     @JoinColumn(name = "room_id", referencedColumnName = "id")
     @ManyToOne(optional = false, fetch = FetchType.LAZY)
@@ -35,7 +33,8 @@ public class Booking {
     @Column(name = "end_date", nullable = false)
     private Date endDate;
 
-    public Booking(int id, User userId, Room roomID, Date startDate, Date endDate) {
+
+    public Booking (int id, User userId, Room roomID, Date startDate, Date endDate) {
         this.id = id;
         this.userId = userId;
         this.roomID = roomID;
@@ -43,43 +42,46 @@ public class Booking {
         this.endDate = endDate;
     }
 
-    public void setId(int id) {
+    public void setId (int id) {
         this.id = id;
     }
 
-    public int getId() {
+    public int getId () {
         return this.id;
     }
 
-    public void setUser(User userId) {
+    public void setUser (User userId) {
         this.userId = userId;
     }
 
-    public User getUser() {
+    public User getUser () {
         return this.userId;
     }
 
-    public void setRoom(Room roomID) {
+    public void setRoom (Room roomID) {
         this.roomID = roomID;
     }
 
-    public Room getRoom() {
+    public Room getRoom () {
         return this.roomID;
     }
 
-    public void setStartDate(Date startDate) {
+    public void setStartDate (Date startDate) {
         this.startDate = startDate;
     }
 
-    public Date getStartDate() {
+    public Date getStartDate () {
         return this.startDate;
     }
 
-    public void setEndDate(Date endDate) {
+    public void setEndDate (Date endDate) {
         this.endDate = endDate;
     }
 
-    public Date getEndDate() {
+    public Date getEndDate () {
         return this.endDate;
     }
+
+
 }
+
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/Models/Hotel.java b/java/roomBooking/src/main/java/com/uva/roomBooking/Models/Hotel.java
index 3a4e6db..5a23005 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/Models/Hotel.java
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/Models/Hotel.java
@@ -35,7 +35,7 @@ public class Hotel {
   @OneToOne(optional = false, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
   private Address address;
 
-  @OneToMany(mappedBy = "hotelId", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+  @OneToMany(mappedBy = "hotel", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
   private List<Room> rooms;
 
   public Hotel() {
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/Models/Room.java b/java/roomBooking/src/main/java/com/uva/roomBooking/Models/Room.java
index 8f8d6c2..7c47003 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/Models/Room.java
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/Models/Room.java
@@ -32,7 +32,7 @@ public class Room {
     @ManyToOne
     @JoinColumn(name = "hotel_id", referencedColumnName = "id")
     @JsonIgnore
-    private Hotel hotelId;
+    private Hotel hotel;
     @Column(name = "room_number", nullable = false)
     private int roomNumber;
     @Column(name = "type", nullable = false)
@@ -48,7 +48,7 @@ public class Room {
 
     public Room(int id, Hotel hotelId, int roomNumber, Tipo type, boolean available, List<Booking> bookings) {
         this.id = id;
-        this.hotelId = hotelId;
+        this.hotel = hotelId;
         this.roomNumber = roomNumber;
         this.type = type;
         this.available = available;
@@ -64,11 +64,11 @@ public class Room {
     }
 
     public void setHotel(Hotel hotelId) {
-        this.hotelId = hotelId;
+        this.hotel = hotelId;
     }
 
     public Hotel getHotel() {
-        return this.hotelId;
+        return this.hotel;
     }
 
     public void setRoomNumber(int roomNumber) {
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/RoomRepository.java b/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/RoomRepository.java
index af5432b..966448f 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/RoomRepository.java
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/RoomRepository.java
@@ -8,6 +8,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDate;
 import java.util.List;
+import java.util.Optional;
 
 public interface RoomRepository extends JpaRepository<Room, Integer> {
 
@@ -16,23 +17,24 @@ public interface RoomRepository extends JpaRepository<Room, Integer> {
 
     // Borrar todas las habitaciones asociadas a un hotel
     @Transactional
+    @Modifying
     void deleteAllByHotelId(int hotelId);
 
     // Encontrar habitaciones disponibles de un hotel en un rango de fechas
     @Query("""
-        SELECT r FROM Room r 
-        WHERE r.hotel.id = :hotelId 
-        AND r.available = true 
-        AND NOT EXISTS (
-            SELECT b FROM Booking b 
-            WHERE b.room.id = r.id 
-            AND (b.startDate <= :endDate AND b.endDate >= :startDate)
-        )
-    """)
+    SELECT r FROM Room r 
+    WHERE r.hotel.id = :hotelId 
+    AND r.available = true 
+    AND NOT EXISTS (
+        SELECT b FROM Booking b 
+        WHERE b.roomID.id = r.id 
+        AND (b.startDate <= :endDate AND b.endDate >= :startDate)
+    )
+""")
     List<Room> findAvailableRoomsByHotelAndDates(
         int hotelId, LocalDate startDate, LocalDate endDate);
 
     // Encontrar una habitación específica por hotel y su ID
     @Query("SELECT r FROM Room r WHERE r.hotel.id = :hotelId AND r.id = :roomId")
-Optional<Room> findByHotelIdAndRoomId(int hotelId, int roomId);
+    Optional<Room> findByHotelIdAndRoomId(int hotelId, int roomId);
 }
-- 
GitLab