diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/Controllers/HotelController.java b/java/roomBooking/src/main/java/com/uva/roomBooking/Controllers/HotelController.java
index 949b175f65224b8ae3399cc8ba14b26c9638b1cc..4739c7343d804c472f691636481e7dd3f7a208d4 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/Controllers/HotelController.java
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/Controllers/HotelController.java
@@ -4,6 +4,7 @@ import java.util.List;
 import java.time.LocalDate;
 
 import com.uva.roomBooking.Exceptions.HotelNotFoundException;
+import com.uva.roomBooking.Exceptions.InvalidDateRangeException;
 import com.uva.roomBooking.Models.Hotel;
 import com.uva.roomBooking.Models.Room;
 import com.uva.roomBooking.Repositories.HotelRepository;
@@ -48,7 +49,8 @@ public class HotelController {
     // Borrar un hotel junto con sus habitaciones (borrado en cascada)
     @DeleteMapping("/{id}")
     public ResponseEntity<Void> deleteHotel(@PathVariable Integer id) {
-        Hotel target = hotelRepository.findById(id).orElseThrow(() -> new HotelNotFoundException(id));
+        Hotel target = hotelRepository.findById(id)
+                .orElseThrow(() -> new HotelNotFoundException(id));
         hotelRepository.delete(target);
         return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
@@ -56,15 +58,14 @@ public class HotelController {
     // Obtener habitaciones de un hotel según disponibilidad y fechas
     @GetMapping("/{hotelId}/rooms")
     public ResponseEntity<List<Room>> getRoomsFromHotel(
-            @PathVariable(required = true) int hotelId,
+            @PathVariable int hotelId,
             @RequestParam(required = false) LocalDate date1,
             @RequestParam(required = false) LocalDate date2) {
 
         List<Room> rooms;
         if (date1 != null && date2 != null) {
             if (!date1.isBefore(date2)) {
-                // TODO cambiar por una excepción adecuada
-                throw new IllegalArgumentException("date1 should be before than date2");
+                throw new InvalidDateRangeException("La fecha de inicio debe ser anterior a la fecha de fin");
             }
             rooms = roomRepository.findAvailableRoomsByHotelAndDates(hotelId, date1, date2);
         } else {
@@ -73,39 +74,21 @@ public class HotelController {
         return new ResponseEntity<>(rooms, HttpStatus.OK);
     }
 
-    // Actualizar disponibilidad de habitaciones de un hotel
-    @PatchMapping("/{hotelId}/rooms/")
-    // TODO incluir tratamiento por id de habitación
-    public ResponseEntity<List<Room>> updateRoomAvailabilityFromHotel(
-            @PathVariable int hotelId, @RequestBody List<Room> updatedRooms) {
-
-        List<Room> existingRooms = roomRepository.findAllByHotelId(hotelId);
-        for (Room updatedRoom : updatedRooms) {
-            existingRooms.stream()
-                    .filter(room -> room.getId() == updatedRoom.getId()) // Conversión a Integer
-                    .findFirst()
-                    .ifPresent(room -> room.setAvailable(updatedRoom.isAvailable()));
-        }
-        roomRepository.saveAll(existingRooms);
-        return new ResponseEntity<>(existingRooms, HttpStatus.OK);
-    }
+    // Actualizar disponibilidad de una habitación específica en un hotel
+    @PatchMapping("/{hotelId}/rooms/{roomId}")
+    public ResponseEntity<Room> updateRoomAvailability(
+            @PathVariable int hotelId,
+            @PathVariable int roomId,
+            @RequestBody boolean available) {
 
-    // Mi propuesta para el anterior
-    // // Actualizar disponibilidad de habitaciones de un hotel
-    // @PatchMapping("/{hotelId}/rooms/{roomId}")
-    // // TODO incluir tratamiento por id de habitación
-    // public ResponseEntity<Room> updateRoomAvailabilityFromHotel(
-    // @PathVariable int hotelId, @PathVariable int roomId, @RequestBody Map<String,
-    // Boolean> roomPatch) {
-    // Room target = roomRepository.findByIdAndHotelId(roomId, hotelId)
-    // .orElseThrow(() -> new IllegalArgumentException("No founds"));
-    // if (roomPatch.containsKey("available")) {
-    // throw new InvalidRequestException("no available field in body request");
-    // }
-    // target.setAvailable(roomPatch.get("available"));
-    // roomRepository.save(target);
-    // return new ResponseEntity<>(target, HttpStatus.OK);
-    // }
+        Room targetRoom = roomRepository.findByIdAndHotelId(roomId, hotelId)
+                .orElseThrow(() -> new IllegalArgumentException("Habitación no encontrada"));
+
+        targetRoom.setAvailable(available);
+        roomRepository.save(targetRoom);
+
+        return new ResponseEntity<>(targetRoom, HttpStatus.OK);
+    }
 
     // Obtener los detalles de una habitación específica en un hotel
     @GetMapping("/{hotelId}/rooms/{roomId}")
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 ba79c4e18fe2e79a993494598b9631c897efda70..03b21e27ffa7e4e921cc9801187911d9f1be6a52 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
@@ -30,6 +30,15 @@ public class GlobalExceptionHandler {
         return new ResponseEntity<>(body, HttpStatus.BAD_REQUEST);
     }
 
+    @ExceptionHandler(InvalidDateRangeException.class)
+    public ResponseEntity<Map<String, Object>> handleInvalidDateRange(InvalidDateRangeException ex) {
+        Map<String, Object> body = new HashMap<>();
+        body.put("timestamp", LocalDateTime.now());
+        body.put("message", ex.getMessage());
+
+        return new ResponseEntity<>(body, HttpStatus.BAD_REQUEST);
+    }
+
     @ExceptionHandler(Exception.class)
     public ResponseEntity<Map<String, Object>> handleGeneralException(Exception ex) {
         Map<String, Object> body = new HashMap<>();
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/Exceptions/InvalidDateRangeException.java b/java/roomBooking/src/main/java/com/uva/roomBooking/Exceptions/InvalidDateRangeException.java
new file mode 100644
index 0000000000000000000000000000000000000000..17a8420453ef402411b61b965d001560a4dd51ce
--- /dev/null
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/Exceptions/InvalidDateRangeException.java
@@ -0,0 +1,8 @@
+package com.uva.roomBooking.Exceptions;
+
+public class InvalidDateRangeException extends RuntimeException {
+    public InvalidDateRangeException(String message) {
+        super(message);
+    }
+}
+