From a0d7b33a42b5e8451c6375f56e31df910c9453fe Mon Sep 17 00:00:00 2001
From: migudel <miguel.moras@estudiantes.uva.es>
Date: Sat, 23 Nov 2024 00:05:28 +0100
Subject: [PATCH] =?UTF-8?q?Modificaci=C3=B3n=20en=20la=20arquitectura=20de?=
 =?UTF-8?q?l=20monolito?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../RoomBookingApplication.java               |  2 +-
 .../exceptions/GlobalExceptionHandler.java    |  2 +-
 .../exceptions/HotelNotFoundException.java    |  2 +-
 .../exceptions/InvalidDateRangeException.java |  2 +-
 .../exceptions/InvalidRequestException.java   |  2 +-
 .../controllers/BookingController.java        | 44 ++++++++++++++-----
 .../services/bookings}/models/Booking.java    |  5 ++-
 .../repositories/BookingRepository.java       | 10 ++++-
 .../hotels}/controllers/HotelController.java  | 21 +++++----
 .../services/hotels}/models/Address.java      |  2 +-
 .../services/hotels}/models/Hotel.java        |  6 +--
 .../services/hotels}/models/Room.java         |  6 +--
 .../hotels}/repositories/HotelRepository.java |  4 +-
 .../hotels}/repositories/RoomRepository.java  |  4 +-
 .../users}/controllers/UserController.java    | 10 ++---
 .../services/users}/models/Tipo.java          |  2 +-
 .../services/users}/models/User.java          |  3 +-
 .../services/users}/models/UserRol.java       |  2 +-
 .../services/users}/models/UserStatus.java    |  2 +-
 .../users}/repositories/UserRepository.java   |  4 +-
 20 files changed, 80 insertions(+), 55 deletions(-)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith}/RoomBookingApplication.java (90%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith}/exceptions/GlobalExceptionHandler.java (97%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith}/exceptions/HotelNotFoundException.java (90%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith}/exceptions/InvalidDateRangeException.java (79%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith}/exceptions/InvalidRequestException.java (88%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/bookings}/controllers/BookingController.java (62%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/bookings}/models/Booking.java (93%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/bookings}/repositories/BookingRepository.java (69%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/hotels}/controllers/HotelController.java (87%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/hotels}/models/Address.java (97%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/hotels}/models/Hotel.java (91%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/hotels}/models/Room.java (94%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/hotels}/repositories/HotelRepository.java (56%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/hotels}/repositories/RoomRepository.java (90%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/users}/controllers/UserController.java (93%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/users}/models/Tipo.java (53%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/users}/models/User.java (96%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/users}/models/UserRol.java (50%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/users}/models/UserStatus.java (64%)
 rename java/roomBooking/src/main/java/com/uva/{roomBooking => monolith/services/users}/repositories/UserRepository.java (66%)

diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/RoomBookingApplication.java b/java/roomBooking/src/main/java/com/uva/monolith/RoomBookingApplication.java
similarity index 90%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/RoomBookingApplication.java
rename to java/roomBooking/src/main/java/com/uva/monolith/RoomBookingApplication.java
index 1a5f312..0a5db24 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/RoomBookingApplication.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/RoomBookingApplication.java
@@ -1,4 +1,4 @@
-package com.uva.roomBooking;
+package com.uva.monolith;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/exceptions/GlobalExceptionHandler.java b/java/roomBooking/src/main/java/com/uva/monolith/exceptions/GlobalExceptionHandler.java
similarity index 97%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/exceptions/GlobalExceptionHandler.java
rename to java/roomBooking/src/main/java/com/uva/monolith/exceptions/GlobalExceptionHandler.java
index 8f6ea71..9428c51 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/exceptions/GlobalExceptionHandler.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/exceptions/GlobalExceptionHandler.java
@@ -1,4 +1,4 @@
-package com.uva.roomBooking.exceptions;
+package com.uva.monolith.exceptions;
 
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/exceptions/HotelNotFoundException.java b/java/roomBooking/src/main/java/com/uva/monolith/exceptions/HotelNotFoundException.java
similarity index 90%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/exceptions/HotelNotFoundException.java
rename to java/roomBooking/src/main/java/com/uva/monolith/exceptions/HotelNotFoundException.java
index e0994ae..129a0b1 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/exceptions/HotelNotFoundException.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/exceptions/HotelNotFoundException.java
@@ -1,4 +1,4 @@
-package com.uva.roomBooking.exceptions;
+package com.uva.monolith.exceptions;
 
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.ResponseStatus;
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/exceptions/InvalidDateRangeException.java b/java/roomBooking/src/main/java/com/uva/monolith/exceptions/InvalidDateRangeException.java
similarity index 79%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/exceptions/InvalidDateRangeException.java
rename to java/roomBooking/src/main/java/com/uva/monolith/exceptions/InvalidDateRangeException.java
index b0e28b0..5fea986 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/exceptions/InvalidDateRangeException.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/exceptions/InvalidDateRangeException.java
@@ -1,4 +1,4 @@
-package com.uva.roomBooking.exceptions;
+package com.uva.monolith.exceptions;
 
 public class InvalidDateRangeException extends RuntimeException {
     public InvalidDateRangeException(String message) {
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/exceptions/InvalidRequestException.java b/java/roomBooking/src/main/java/com/uva/monolith/exceptions/InvalidRequestException.java
similarity index 88%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/exceptions/InvalidRequestException.java
rename to java/roomBooking/src/main/java/com/uva/monolith/exceptions/InvalidRequestException.java
index f7c25d1..ca09e05 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/exceptions/InvalidRequestException.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/exceptions/InvalidRequestException.java
@@ -1,4 +1,4 @@
-package com.uva.roomBooking.exceptions;
+package com.uva.monolith.exceptions;
 
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.ResponseStatus;
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/BookingController.java b/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/controllers/BookingController.java
similarity index 62%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/controllers/BookingController.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/bookings/controllers/BookingController.java
index aff1e60..f309f2b 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/BookingController.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/controllers/BookingController.java
@@ -1,20 +1,20 @@
 // BookingController.java
-package com.uva.roomBooking.controllers;
-
-import com.uva.roomBooking.models.Booking;
-import com.uva.roomBooking.models.Room;
-import com.uva.roomBooking.models.User;
-import com.uva.roomBooking.repositories.BookingRepository;
-import com.uva.roomBooking.repositories.RoomRepository;
-import com.uva.roomBooking.repositories.UserRepository;
+package com.uva.monolith.services.bookings.controllers;
 
 import jakarta.transaction.Transactional;
 
 import org.springframework.http.HttpStatus;
-import org.springframework.http.HttpStatusCode;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
+import com.uva.monolith.services.bookings.models.Booking;
+import com.uva.monolith.services.bookings.repositories.BookingRepository;
+import com.uva.monolith.services.hotels.models.Room;
+import com.uva.monolith.services.hotels.repositories.RoomRepository;
+import com.uva.monolith.services.users.models.User;
+import com.uva.monolith.services.users.repositories.UserRepository;
+
+import java.time.LocalDate;
 import java.util.List;
 
 @RestController
@@ -33,9 +33,29 @@ public class BookingController {
         this.roomRepository = roomRepository;
     }
 
-    @GetMapping
-    public List<Booking> getAllBookings() {
-        return bookingRepository.findAll();
+    @GetMapping(params = { "start", "end", "roomId" })
+    public List<Booking> getAllBookings(
+            @RequestParam(required = false) LocalDate start,
+            @RequestParam(required = false) LocalDate end,
+            @RequestParam(required = false) Integer roomId) {
+
+        List<Booking> bookings = null;
+        if (start != null && end != null) {
+            bookings = bookingRepository.findByDateRange(start, end);
+        }
+        if (roomId != null) {
+            if (bookings == null) {
+                bookings = bookingRepository.findByRoomId(roomId);
+            } else {
+                bookings = bookings.stream()
+                        .filter(booking -> booking.getRoomId().getId() == roomId)
+                        .toList();
+            }
+        }
+        if (start == null & end == null && roomId == null) {
+            bookings = bookingRepository.findAll();
+        }
+        return bookings;
     }
 
     @PostMapping
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/models/Booking.java b/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/models/Booking.java
similarity index 93%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/models/Booking.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/bookings/models/Booking.java
index a46e2a6..b3b0a5a 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/models/Booking.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/models/Booking.java
@@ -1,4 +1,4 @@
-package com.uva.roomBooking.models;
+package com.uva.monolith.services.bookings.models;
 
 import jakarta.persistence.Basic;
 import jakarta.persistence.CascadeType;
@@ -13,6 +13,9 @@ import jakarta.persistence.ManyToOne;
 import jakarta.persistence.Table;
 import java.time.LocalDate;
 
+import com.uva.monolith.services.hotels.models.Room;
+import com.uva.monolith.services.users.models.User;
+
 @Entity
 @Table(name = "bookings")
 public class Booking {
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/repositories/BookingRepository.java b/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/repositories/BookingRepository.java
similarity index 69%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/repositories/BookingRepository.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/bookings/repositories/BookingRepository.java
index fc6363d..103dbaa 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/repositories/BookingRepository.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/repositories/BookingRepository.java
@@ -1,5 +1,5 @@
 // BookingRepository.java
-package com.uva.roomBooking.repositories;
+package com.uva.monolith.services.bookings.repositories;
 
 import jakarta.transaction.Transactional;
 
@@ -11,9 +11,15 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 
-import com.uva.roomBooking.models.Booking;
+import com.uva.monolith.services.bookings.models.Booking;
 
 public interface BookingRepository extends JpaRepository<Booking, Integer> {
+    @Query("SELECT b FROM Booking b WHERE b.roomId.id = ?1")
+    List<Booking> findByRoomId(int roomId);
+
+    @Query("SELECT b FROM Booking b WHERE b.startDate < ?1 AND b.endDate > ?2")
+    List<Booking> findByDateRange(@Param("startDate") LocalDate startDate,
+            @Param("endDate") LocalDate endDate);
 
     @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,
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/HotelController.java b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java
similarity index 87%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/controllers/HotelController.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java
index 6d215e4..5852aa7 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/HotelController.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java
@@ -1,24 +1,23 @@
-package com.uva.roomBooking.controllers;
+package com.uva.monolith.services.hotels.controllers;
 
 import java.util.List;
 import java.util.Map;
 import java.time.LocalDate;
 
-import com.uva.roomBooking.exceptions.HotelNotFoundException;
-import com.uva.roomBooking.exceptions.InvalidDateRangeException;
-import com.uva.roomBooking.exceptions.InvalidRequestException;
-import com.uva.roomBooking.models.Booking;
-import com.uva.roomBooking.models.Hotel;
-import com.uva.roomBooking.models.Room;
-import com.uva.roomBooking.repositories.BookingRepository;
-import com.uva.roomBooking.repositories.HotelRepository;
-import com.uva.roomBooking.repositories.RoomRepository;
-
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
+import com.uva.monolith.exceptions.HotelNotFoundException;
+import com.uva.monolith.exceptions.InvalidDateRangeException;
+import com.uva.monolith.exceptions.InvalidRequestException;
+import com.uva.monolith.services.bookings.repositories.BookingRepository;
+import com.uva.monolith.services.hotels.models.Hotel;
+import com.uva.monolith.services.hotels.models.Room;
+import com.uva.monolith.services.hotels.repositories.HotelRepository;
+import com.uva.monolith.services.hotels.repositories.RoomRepository;
+
 @RestController
 @RequestMapping("hotels")
 @CrossOrigin(origins = "*")
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/models/Address.java b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Address.java
similarity index 97%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/models/Address.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Address.java
index 5e5a6a8..5f31a2a 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/models/Address.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Address.java
@@ -1,4 +1,4 @@
-package com.uva.roomBooking.models;
+package com.uva.monolith.services.hotels.models;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/models/Hotel.java b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Hotel.java
similarity index 91%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/models/Hotel.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Hotel.java
index 182fbc4..7400dfa 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/models/Hotel.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Hotel.java
@@ -1,10 +1,6 @@
-package com.uva.roomBooking.models;
+package com.uva.monolith.services.hotels.models;
 
 import java.util.List;
-
-import com.fasterxml.jackson.annotation.JsonIdentityInfo;
-import com.fasterxml.jackson.annotation.ObjectIdGenerators;
-
 import jakarta.persistence.Basic;
 import jakarta.persistence.CascadeType;
 import jakarta.persistence.Entity;
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/models/Room.java b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Room.java
similarity index 94%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/models/Room.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Room.java
index 3cbd277..0ac71f5 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/models/Room.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Room.java
@@ -1,10 +1,10 @@
-package com.uva.roomBooking.models;
+package com.uva.monolith.services.hotels.models;
 
 import java.util.List;
 
-import com.fasterxml.jackson.annotation.JsonIdentityInfo;
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.ObjectIdGenerators;
+import com.uva.monolith.services.bookings.models.Booking;
+import com.uva.monolith.services.users.models.Tipo;
 
 import jakarta.persistence.Basic;
 import jakarta.persistence.CascadeType;
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/repositories/HotelRepository.java b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/repositories/HotelRepository.java
similarity index 56%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/repositories/HotelRepository.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/hotels/repositories/HotelRepository.java
index 5b7855e..ad88e98 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/repositories/HotelRepository.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/repositories/HotelRepository.java
@@ -1,8 +1,8 @@
-package com.uva.roomBooking.repositories;
+package com.uva.monolith.services.hotels.repositories;
 
 import org.springframework.data.jpa.repository.JpaRepository;
 
-import com.uva.roomBooking.models.Hotel;
+import com.uva.monolith.services.hotels.models.Hotel;
 
 public interface HotelRepository extends JpaRepository<Hotel, Integer> {
 
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/repositories/RoomRepository.java b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/repositories/RoomRepository.java
similarity index 90%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/repositories/RoomRepository.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/hotels/repositories/RoomRepository.java
index 05dd20b..78187e4 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/repositories/RoomRepository.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/repositories/RoomRepository.java
@@ -1,9 +1,9 @@
-package com.uva.roomBooking.repositories;
+package com.uva.monolith.services.hotels.repositories;
 
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 
-import com.uva.roomBooking.models.Room;
+import com.uva.monolith.services.hotels.models.Room;
 
 import java.time.LocalDate;
 import java.util.List;
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/UserController.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/controllers/UserController.java
similarity index 93%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/controllers/UserController.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/users/controllers/UserController.java
index 3a744d5..812d0b8 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/UserController.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/users/controllers/UserController.java
@@ -1,4 +1,4 @@
-package com.uva.roomBooking.controllers;
+package com.uva.monolith.services.users.controllers;
 
 import java.time.LocalDate;
 import java.util.List;
@@ -18,10 +18,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.uva.roomBooking.models.Booking;
-import com.uva.roomBooking.models.User;
-import com.uva.roomBooking.models.UserStatus;
-import com.uva.roomBooking.repositories.UserRepository;
+import com.uva.monolith.services.bookings.models.Booking;
+import com.uva.monolith.services.users.models.User;
+import com.uva.monolith.services.users.models.UserStatus;
+import com.uva.monolith.services.users.repositories.UserRepository;
 
 @RestController
 @RequestMapping("users")
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/models/Tipo.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/Tipo.java
similarity index 53%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/models/Tipo.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/users/models/Tipo.java
index 95d51b8..8b240e8 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/models/Tipo.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/Tipo.java
@@ -1,4 +1,4 @@
-package com.uva.roomBooking.models;
+package com.uva.monolith.services.users.models;
 
 public enum Tipo {
     SINGLE,
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/models/User.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/User.java
similarity index 96%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/models/User.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/users/models/User.java
index 05e1a24..3936e7d 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/models/User.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/User.java
@@ -1,9 +1,10 @@
-package com.uva.roomBooking.models;
+package com.uva.monolith.services.users.models;
 
 import java.time.LocalDate;
 import java.util.List;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.uva.monolith.services.bookings.models.Booking;
 
 import jakarta.persistence.Basic;
 import jakarta.persistence.CascadeType;
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/models/UserRol.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/UserRol.java
similarity index 50%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/models/UserRol.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/users/models/UserRol.java
index cba769f..0abe595 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/models/UserRol.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/UserRol.java
@@ -1,4 +1,4 @@
-package com.uva.roomBooking.models;
+package com.uva.monolith.services.users.models;
 
 public enum UserRol {
   HOTEL_ADMIN, CONSUMER
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/models/UserStatus.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/UserStatus.java
similarity index 64%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/models/UserStatus.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/users/models/UserStatus.java
index 724f962..362b868 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/models/UserStatus.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/UserStatus.java
@@ -1,4 +1,4 @@
-package com.uva.roomBooking.models;
+package com.uva.monolith.services.users.models;
 
 public enum UserStatus {
   NO_BOOKINGS, WITH_ACTIVE_BOOKINGS, WITH_INACTIVE_BOOKINGS;
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/repositories/UserRepository.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/repositories/UserRepository.java
similarity index 66%
rename from java/roomBooking/src/main/java/com/uva/roomBooking/repositories/UserRepository.java
rename to java/roomBooking/src/main/java/com/uva/monolith/services/users/repositories/UserRepository.java
index 1fdfc1e..e5b44c9 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/repositories/UserRepository.java
+++ b/java/roomBooking/src/main/java/com/uva/monolith/services/users/repositories/UserRepository.java
@@ -1,10 +1,10 @@
-package com.uva.roomBooking.repositories;
+package com.uva.monolith.services.users.repositories;
 
 import java.util.Optional;
 
 import org.springframework.data.jpa.repository.JpaRepository;
 
-import com.uva.roomBooking.models.User;
+import com.uva.monolith.services.users.models.User;
 
 public interface UserRepository extends JpaRepository<User, Integer> {
   Optional<User> findByEmail(String email);
-- 
GitLab