diff --git a/java/services/bookings/pom.xml b/java/services/bookings/pom.xml index 476f735b695a459292a258d72d89261c89dca993..957ab2baae5bc9cd55fd13fa4610617dcf4153a0 100644 --- a/java/services/bookings/pom.xml +++ b/java/services/bookings/pom.xml @@ -9,10 +9,10 @@ <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.uva</groupId> - <artifactId>roomBooking</artifactId> + <artifactId>bookingService</artifactId> <version>0.0.1-SNAPSHOT</version> - <name>roomBooking</name> - <description>Room Booking rest</description> + <name>bookingService</name> + <description>Booking Microservice</description> <url/> <licenses> <license/> diff --git a/java/services/bookings/src/main/java/com/uva/bookings/Controllers/BookingController.java b/java/services/bookings/src/main/java/com/uva/bookings/Controllers/BookingController.java new file mode 100644 index 0000000000000000000000000000000000000000..66b49481d04a156fb1a4ab509612ca3a7a601234 --- /dev/null +++ b/java/services/bookings/src/main/java/com/uva/bookings/Controllers/BookingController.java @@ -0,0 +1,126 @@ +package com.uva.bookings.Controllers; + +import com.uva.bookings.Models.Booking; +import com.uva.bookings.Repositories.BookingRepository; + +import jakarta.transaction.Transactional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; + +import java.util.List; + +@RestController +@RequestMapping("/bookings") +@CrossOrigin(origins = "*") +public class BookingController { + + @Autowired + private BookingRepository bookingRepository; + + @Autowired + private RestTemplate restTemplate; + + @GetMapping + public ResponseEntity<List<Booking>> getBookings( + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate, + @RequestParam(required = false) Integer roomId) { + + // Si no se proporcionan filtros, devolver todas las reservas + if (startDate == null && endDate == null && roomId == null) { + return ResponseEntity.ok(bookingRepository.findAll()); + } + + // Obtener reservas filtradas por los parámetros dados + List<Booking> bookings = bookingRepository.findByFilters(startDate, endDate, roomId); + if (bookings.isEmpty()) { + return ResponseEntity.noContent().build(); + } + + return ResponseEntity.ok(bookings); + } + + @PostMapping + public Booking createBooking(@RequestBody Booking booking) { + // Llamada al microservicio de usuarios para validar al usuario + ResponseEntity<Void> userResponse = restTemplate.exchange( + "http://user-service/users/{userId}", + HttpMethod.GET, + null, + Void.class, + booking.getUserId() + ); + if (!userResponse.getStatusCode().is2xxSuccessful()) { + throw new RuntimeException("User not found"); + } + + // Llamada al microservicio de habitaciones para validar la habitación + ResponseEntity<Void> roomResponse = restTemplate.exchange( + "http://room-service/rooms/{roomId}", + HttpMethod.GET, + null, + Void.class, + booking.getRoomId() + ); + if (!roomResponse.getStatusCode().is2xxSuccessful()) { + throw new RuntimeException("Room not found"); + } + + // Verificar disponibilidad + List<Booking> existingBookings = bookingRepository.findByRoomIdAndDateRange( + booking.getRoomId(), booking.getStartDate(), booking.getEndDate()); + + if (!existingBookings.isEmpty()) { + throw new RuntimeException("Room is not available for the selected dates"); + } + + return bookingRepository.save(booking); + } + + @GetMapping("/{id}") + public Booking getBookingById(@PathVariable Integer id) { + return bookingRepository.findById(id) + .orElseThrow(() -> new RuntimeException("Booking not found")); + } + + @GetMapping(params = "userId") + public ResponseEntity<List<Booking>> getBookingsByUserId(@RequestParam Integer userId) { + // Llamada al microservicio de usuarios para validar la existencia del usuario + ResponseEntity<Void> userResponse = restTemplate.exchange( + "http://user-service/users/{userId}", + HttpMethod.GET, + null, + Void.class, + userId + ); + + if (!userResponse.getStatusCode().is2xxSuccessful()) { + return ResponseEntity.noContent().build(); + } + + List<Booking> bookings = bookingRepository.findByUserId(userId); + if (bookings.isEmpty()) { + return ResponseEntity.noContent().build(); + } + return ResponseEntity.ok(bookings); + } + + @DeleteMapping("/{id}") + @Transactional + public ResponseEntity<Void> deleteBooking(@PathVariable Integer id) { + try { + if (!bookingRepository.existsById(id)) + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + + bookingRepository.deleteBookingById(id); + return new ResponseEntity<>(HttpStatus.ACCEPTED); + } catch (Exception e) { + return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + } +} diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Exceptions/GlobalExceptionHandler.java b/java/services/bookings/src/main/java/com/uva/bookings/Exceptions/GlobalExceptionHandler.java similarity index 97% rename from java/services/bookings/src/main/java/com/uva/roomBooking/Exceptions/GlobalExceptionHandler.java rename to java/services/bookings/src/main/java/com/uva/bookings/Exceptions/GlobalExceptionHandler.java index 03b21e27ffa7e4e921cc9801187911d9f1be6a52..8a9f4447dd4c4a94fbc32379ced1c86e8bd75e8c 100644 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Exceptions/GlobalExceptionHandler.java +++ b/java/services/bookings/src/main/java/com/uva/bookings/Exceptions/GlobalExceptionHandler.java @@ -1,4 +1,4 @@ -package com.uva.roomBooking.Exceptions; +package com.uva.bookings.Exceptions; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Exceptions/HotelNotFoundException.java b/java/services/bookings/src/main/java/com/uva/bookings/Exceptions/HotelNotFoundException.java similarity index 90% rename from java/services/bookings/src/main/java/com/uva/roomBooking/Exceptions/HotelNotFoundException.java rename to java/services/bookings/src/main/java/com/uva/bookings/Exceptions/HotelNotFoundException.java index 3d47f5efad71b6fbf3b3f5912493c9c0af1ca412..b0f7409bd4ea5bf89816d979c1643dccbe2dea47 100644 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Exceptions/HotelNotFoundException.java +++ b/java/services/bookings/src/main/java/com/uva/bookings/Exceptions/HotelNotFoundException.java @@ -1,4 +1,4 @@ -package com.uva.roomBooking.Exceptions; +package com.uva.bookings.Exceptions; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ResponseStatus; diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Exceptions/InvalidDateRangeException.java b/java/services/bookings/src/main/java/com/uva/bookings/Exceptions/InvalidDateRangeException.java similarity index 79% rename from java/services/bookings/src/main/java/com/uva/roomBooking/Exceptions/InvalidDateRangeException.java rename to java/services/bookings/src/main/java/com/uva/bookings/Exceptions/InvalidDateRangeException.java index 17a8420453ef402411b61b965d001560a4dd51ce..adca056e50cc8a5a27e06510b4eefe0ebcfb3207 100644 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Exceptions/InvalidDateRangeException.java +++ b/java/services/bookings/src/main/java/com/uva/bookings/Exceptions/InvalidDateRangeException.java @@ -1,4 +1,4 @@ -package com.uva.roomBooking.Exceptions; +package com.uva.bookings.Exceptions; public class InvalidDateRangeException extends RuntimeException { public InvalidDateRangeException(String message) { diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Exceptions/InvalidRequestException.java b/java/services/bookings/src/main/java/com/uva/bookings/Exceptions/InvalidRequestException.java similarity index 88% rename from java/services/bookings/src/main/java/com/uva/roomBooking/Exceptions/InvalidRequestException.java rename to java/services/bookings/src/main/java/com/uva/bookings/Exceptions/InvalidRequestException.java index a8433b6f620da742dab87dae96a2e0f0193709ff..76432c4e307148cb13288a969cf755606e76428b 100644 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Exceptions/InvalidRequestException.java +++ b/java/services/bookings/src/main/java/com/uva/bookings/Exceptions/InvalidRequestException.java @@ -1,4 +1,4 @@ -package com.uva.roomBooking.Exceptions; +package com.uva.bookings.Exceptions; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ResponseStatus; diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Booking.java b/java/services/bookings/src/main/java/com/uva/bookings/Models/Booking.java similarity index 71% rename from java/services/bookings/src/main/java/com/uva/roomBooking/Models/Booking.java rename to java/services/bookings/src/main/java/com/uva/bookings/Models/Booking.java index c546d1916b1c29a10f95c97f03db34e64ffbe7d2..269daf37234145f3d248ff0782e3b99c0b138168 100644 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Booking.java +++ b/java/services/bookings/src/main/java/com/uva/bookings/Models/Booking.java @@ -1,4 +1,4 @@ -package com.uva.roomBooking.Models; +package com.uva.bookings.Models; import jakarta.persistence.Basic; import jakarta.persistence.CascadeType; @@ -20,12 +20,10 @@ public class Booking { @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) private int id; - @JoinColumn(name = "user_id", referencedColumnName = "id") - @ManyToOne(optional = false, fetch = FetchType.EAGER, cascade = CascadeType.MERGE) - private User userId; - @JoinColumn(name = "room_id", referencedColumnName = "id") - @ManyToOne(optional = false, fetch = FetchType.EAGER, cascade = CascadeType.MERGE) - private Room roomId; + @Column(name = "user_id", nullable = false) + private int userId; + @Column(name = "room_id", nullable = false) + private int roomId; @Column(name = "start_date", nullable = false) private LocalDate startDate; @Column(name = "end_date", nullable = false) @@ -34,7 +32,7 @@ public class Booking { public Booking() { } - public Booking(int id, User userId, Room roomID, LocalDate startDate, LocalDate endDate) { + public Booking(int id, int userId, int roomID, LocalDate startDate, LocalDate endDate) { this.id = id; this.userId = userId; this.roomId = roomID; @@ -50,19 +48,19 @@ public class Booking { return this.id; } - public void setUserId(User userId) { + public void setUserId(int userId) { this.userId = userId; } - public User getUserId() { + public int getUserId() { return this.userId; } - public void setRoomId(Room roomID) { + public void setRoomId(int roomID) { this.roomId = roomID; } - public Room getRoomId() { + public int getRoomId() { return this.roomId; } diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java b/java/services/bookings/src/main/java/com/uva/bookings/Repositories/BookingRepository.java similarity index 53% rename from java/services/bookings/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java rename to java/services/bookings/src/main/java/com/uva/bookings/Repositories/BookingRepository.java index 16c860a30fd168d4e03018ef02466dcd5adb7f99..8459911ba59cbf0095b2a7406c0022004f17cd9f 100644 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java +++ b/java/services/bookings/src/main/java/com/uva/bookings/Repositories/BookingRepository.java @@ -1,7 +1,7 @@ // BookingRepository.java -package com.uva.roomBooking.Repositories; +package com.uva.bookings.Repositories; -import com.uva.roomBooking.Models.Booking; +import com.uva.bookings.Models.Booking; import jakarta.transaction.Transactional; @@ -15,7 +15,7 @@ import org.springframework.data.repository.query.Param; 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") + @Query("SELECT b FROM Booking b WHERE b.roomId = ?1 AND b.startDate < ?2 AND b.endDate > ?3") List<Booking> findByRoomIdAndDateRange(@Param("roomId") int roomId, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate); @@ -24,9 +24,17 @@ public interface BookingRepository extends JpaRepository<Booking, Integer> { @Query("DELETE FROM Booking b WHERE b.id = ?1") void deleteBookingById(@Param("id") Integer id); - @Transactional - @Modifying - @Query("DELETE FROM Booking b WHERE b.roomId.hotel.id = ?1") - void deleteAllByHotelId(int hotelId); + + List<Booking> findByUserId(Integer userId); + + @Query("SELECT b FROM Booking b WHERE " + + "(:roomId IS NULL OR b.roomId = :roomId) AND " + + "(:startDate IS NULL OR b.startDate >= :startDate) AND " + + "(:endDate IS NULL OR b.endDate <= :endDate)") + List<Booking> findByFilters(@Param("startDate") String startDate, + @Param("endDate") String endDate, + @Param("roomId") Integer roomId); + + } diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/RoomBookingApplication.java b/java/services/bookings/src/main/java/com/uva/bookings/bookingServiceApplication.java similarity index 59% rename from java/services/bookings/src/main/java/com/uva/roomBooking/RoomBookingApplication.java rename to java/services/bookings/src/main/java/com/uva/bookings/bookingServiceApplication.java index 1a5f312d49b2d1db4ffe587e4ae02c35e1e9a506..ae4765caf5111f18fdbceafd5a66272e8aafd775 100644 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/RoomBookingApplication.java +++ b/java/services/bookings/src/main/java/com/uva/bookings/bookingServiceApplication.java @@ -1,13 +1,13 @@ -package com.uva.roomBooking; +package com.uva.bookings; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -public class RoomBookingApplication { +public class bookingServiceApplication { public static void main(String[] args) { - SpringApplication.run(RoomBookingApplication.class, args); + SpringApplication.run(bookingServiceApplication.class, args); } } diff --git a/java/services/bookings/src/main/java/com/uva/bookings/config/RestTemplateConfig.java b/java/services/bookings/src/main/java/com/uva/bookings/config/RestTemplateConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..9891319840494a78fb1f0c8c67a1001461d4467b --- /dev/null +++ b/java/services/bookings/src/main/java/com/uva/bookings/config/RestTemplateConfig.java @@ -0,0 +1,14 @@ +package com.uva.bookings.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class RestTemplateConfig { + + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } +} diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Controllers/BookingController.java b/java/services/bookings/src/main/java/com/uva/roomBooking/Controllers/BookingController.java deleted file mode 100644 index 5baa50358b36dfffd3184fd0e7e46a9177b2ef55..0000000000000000000000000000000000000000 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Controllers/BookingController.java +++ /dev/null @@ -1,80 +0,0 @@ -// 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; - -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 java.util.List; - -@RestController -@RequestMapping("/bookings") -@CrossOrigin(origins = "*") -public class BookingController { - - private final BookingRepository bookingRepository; - private final UserRepository userRepository; - private final RoomRepository roomRepository; - - public BookingController(BookingRepository bookingRepository, UserRepository userRepository, - RoomRepository roomRepository) { - this.bookingRepository = bookingRepository; - this.userRepository = userRepository; - this.roomRepository = roomRepository; - } - - @GetMapping - public List<Booking> getAllBookings() { - return bookingRepository.findAll(); - } - - @PostMapping - public Booking createBooking(@RequestBody Booking booking) { - User user = userRepository.findById(booking.getUserId().getId()) - .orElseThrow(() -> new RuntimeException("User not found")); - Room room = roomRepository.findById(booking.getRoomId().getId()) - .orElseThrow(() -> new RuntimeException("Room not found")); - - // Verificar disponibilidad - List<Booking> existingBookings = bookingRepository.findByRoomIdAndDateRange( - room.getId(), booking.getStartDate(), booking.getEndDate()); - - if (!existingBookings.isEmpty()) { - throw new RuntimeException("Room is not available for the selected dates"); - } - - booking.setUserId(user); - booking.setRoomId(room); - return bookingRepository.save(booking); - } - - @GetMapping("/{id}") - public Booking getBookingById(@PathVariable Integer id) { - return bookingRepository.findById(id) - .orElseThrow(() -> new RuntimeException("Booking not found")); - } - - @DeleteMapping("/{id}") - @Transactional - public ResponseEntity<Void> deleteBooking(@PathVariable Integer id) { - try { - if (!bookingRepository.existsById(id)) - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - - bookingRepository.deleteBookingById(id); - return new ResponseEntity<>(HttpStatus.ACCEPTED); - } catch (Exception e) { - return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); - } - } -} diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Controllers/HotelController.java b/java/services/bookings/src/main/java/com/uva/roomBooking/Controllers/HotelController.java deleted file mode 100644 index 803edc35fdcbf2b5ec7fc96972e8ee2a7777391d..0000000000000000000000000000000000000000 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Controllers/HotelController.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.uva.roomBooking.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.*; - -@RestController -@RequestMapping("hotels") -@CrossOrigin(origins = "*") -public class HotelController { - private final HotelRepository hotelRepository; - private final RoomRepository roomRepository; - private final BookingRepository bookingRepository; - - public HotelController(HotelRepository hotelRepository, RoomRepository roomRepository, - BookingRepository bookingRepository) { - this.hotelRepository = hotelRepository; - this.roomRepository = roomRepository; - this.bookingRepository = bookingRepository; - } - - // Obtener todos los hoteles - @GetMapping - public List<Hotel> getAllHotels() { - return hotelRepository.findAll(); - } - - // Añadir un hotel con sus habitaciones - @PostMapping - public ResponseEntity<Hotel> addHotel(@RequestBody Hotel hotel) { - Hotel savedHotel = hotelRepository.save(hotel); - return new ResponseEntity<>(savedHotel, HttpStatus.CREATED); - } - - // Obtener un hotel por su ID - @GetMapping("/{id}") - public Hotel getHotelById(@PathVariable int id) { - return hotelRepository.findById(id) - .orElseThrow(() -> new HotelNotFoundException(id)); - } - - // Borrar un hotel junto con sus habitaciones (borrado en cascada) - @DeleteMapping("/{id}") - @Transactional - public ResponseEntity<Void> deleteHotel(@PathVariable Integer id) { - Hotel target = hotelRepository.findById(id) - .orElseThrow(() -> new HotelNotFoundException(id)); - bookingRepository.deleteAllByHotelId(id); - hotelRepository.delete(target); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - // Obtener habitaciones de un hotel según disponibilidad y fechas - @GetMapping("/{hotelId}/rooms") - public ResponseEntity<List<Room>> getRoomsFromHotel( - @PathVariable int hotelId, - @RequestParam(required = false) LocalDate start, - @RequestParam(required = false) LocalDate end) { - - List<Room> rooms; - if (start != null && end != null) { - if (!start.isBefore(end)) { - throw new InvalidDateRangeException("La fecha de inicio debe ser anterior a la fecha de fin"); - } - rooms = roomRepository.findAvailableRoomsByHotelAndDates(hotelId, start, end); - } else { - rooms = roomRepository.findAllByHotelId(hotelId); - } - return new ResponseEntity<>(rooms, 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 Map<String, Boolean> body) { - - if (!body.containsKey("available")) { - throw new InvalidRequestException("El campo 'available' es obligatorio"); - } - - Room targetRoom = roomRepository.findByIdAndHotelId(roomId, hotelId) - .orElseThrow(() -> new IllegalArgumentException("Habitación no encontrada")); - - targetRoom.setAvailable(body.get("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}") - public Room getRoomByIdFromHotel( - @PathVariable int hotelId, @PathVariable int roomId) { - return roomRepository.findByIdAndHotelId(roomId, hotelId) - .orElseThrow(() -> new HotelNotFoundException(hotelId)); - } -} diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Controllers/UserController.java b/java/services/bookings/src/main/java/com/uva/roomBooking/Controllers/UserController.java deleted file mode 100644 index a0e6397b9cabc191f7d5d24ecde162e8da6b2f14..0000000000000000000000000000000000000000 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Controllers/UserController.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.uva.roomBooking.Controllers; - -import java.time.LocalDate; -import java.util.List; -import java.util.Map; - -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PatchMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import com.uva.roomBooking.Models.UserStatus; -import com.uva.roomBooking.Models.Booking; -import com.uva.roomBooking.Models.User; -import com.uva.roomBooking.Repositories.UserRepository; - -@RestController -@RequestMapping("users") -@CrossOrigin(origins = "*") -public class UserController { - private final UserRepository userRepository; - - public UserController(UserRepository userRepository) { - this.userRepository = userRepository; - } - - @GetMapping - public List<User> getAllUsers() { - return userRepository.findAll(); - } - - @PostMapping - public User addUser(@RequestBody User user) { - // TODO revisar como se desea manejar estado por defecto - user.setStatus(UserStatus.NO_BOOKINGS); - // Aunque se asegure a lo mejor no es la forma de manejo esperada - return userRepository.save(user); - } - - @GetMapping("/{id}") - public User getUserById(@PathVariable int id) { - return userRepository.findById(id).orElseThrow(); - } - - @PutMapping("/{id}") - public User updateUserData(@PathVariable int id, @RequestBody Map<String, String> json) { - User target = userRepository.findById(id).orElseThrow(); - if (!json.containsKey("name") || !json.containsKey("email")) { - // TODO cambiar manejo - throw new RuntimeException("Missing required fields"); - } - target.setName(json.get("name")); - target.setEmail(json.get("email")); - return userRepository.save(target); - } - - @PatchMapping("/{id}") - public User updateUserState(@PathVariable int id, @RequestBody Map<String, String> json) { - User target = userRepository.findById(id).orElseThrow(); - String strStatus = json.get("status"); - if (strStatus == null) { - // TODO cambiar manejo - throw new RuntimeException("Missing required fields"); - } - UserStatus userStatus = UserStatus.valueOf(strStatus); - - boolean activeBookings = target.getBookings().stream() - .anyMatch(booking -> !booking.getEndDate().isBefore(LocalDate.now())); // reserva >= ahora - boolean inactiveBookings = target.getBookings().stream() - .anyMatch(booking -> booking.getStartDate().isBefore(LocalDate.now())); // reserva < ahora - - switch (userStatus) { - // TODO Buscar como validar las (in)active bookings - case NO_BOOKINGS: - if (!target.getBookings().isEmpty()) - throw new IllegalArgumentException("Invalid State: The user has at least one booking"); - break; - case WITH_ACTIVE_BOOKINGS: - if (target.getBookings().isEmpty()) - throw new IllegalArgumentException("Invalid State: The user don't has bookings"); - if (!activeBookings) - throw new IllegalArgumentException("Invalid State: The user don't has active bookings"); - break; - case WITH_INACTIVE_BOOKINGS: - if (target.getBookings().isEmpty()) - throw new IllegalArgumentException("Invalid State: The user don't has bookings"); - if (!inactiveBookings) - throw new IllegalArgumentException("Invalid State: The user don't has inactive bookings"); - break; - default: - break; - } - target.setStatus(userStatus); - return userRepository.save(target); - } - - @DeleteMapping("/{id}") - public User deleteUser(@PathVariable Integer id) { - User target; - if ((target = userRepository.findById(id).orElseThrow()) != null) { - userRepository.deleteById(id); - } - return target; - } - - @GetMapping("/{id}/bookings") - public List<Booking> getUserBookingsById(@PathVariable int id) { - User user = userRepository.findById(id).orElseThrow(); - return user.getBookings(); - } -} diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Address.java b/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Address.java deleted file mode 100644 index 5e51f55e710c68ac38d4cb1c5769e574b06654bf..0000000000000000000000000000000000000000 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Address.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.uva.roomBooking.Models; - -import com.fasterxml.jackson.annotation.JsonIgnore; - -import jakarta.persistence.Basic; -import jakarta.persistence.CascadeType; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.OneToOne; -import jakarta.persistence.Table; - -@Entity -@Table(name = "addresses") -public class Address { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Basic(optional = false) - private int id; - - @Basic(optional = false) - @Column(name = "street_kind") - private String streetKind; - - @Basic(optional = false) - @Column(name = "street_name") - private String streetName; - - @Basic(optional = false) - private int number; - - @Basic(optional = false) - @Column(name = "post_code") - private String postCode; - - @Basic(optional = true) - @Column(name = "other_info") - private String otherInfo; - - @JsonIgnore - @OneToOne(mappedBy = "address", fetch = FetchType.EAGER, cascade = CascadeType.ALL) - private Hotel hotel; - - public Address() { - } - - public Address(String streetKind, String streetName, int number, String postCode, String otherInfo, Hotel hotel) { - setStreetKind(streetKind); - setStreetName(streetName); - setNumber(number); - setPostCode(postCode); - setOtherInfo(otherInfo); - setHotel(hotel); - } - - public int getId() { - return this.id; - } - - public void setId(int id) { - this.id = id; - } - - public String getStreetKind() { - return this.streetKind; - } - - public void setStreetKind(String streetKind) { - this.streetKind = streetKind; - } - - public String getStreetName() { - return this.streetName; - } - - public void setStreetName(String streetName) { - this.streetName = streetName; - } - - public int getNumber() { - return this.number; - } - - public void setNumber(int number) { - this.number = number; - } - - public String getPostCode() { - return this.postCode; - } - - public void setPostCode(String postCode) { - this.postCode = postCode; - } - - public String getOtherInfo() { - return this.otherInfo; - } - - public void setOtherInfo(String otherInfo) { - this.otherInfo = otherInfo; - } - - public Hotel getHotel() { - return this.hotel; - } - - public void setHotel(Hotel hotel) { - this.hotel = hotel; - } -} diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Hotel.java b/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Hotel.java deleted file mode 100644 index 5a23005de99c022b5fff9570e2c515fcfc75e07e..0000000000000000000000000000000000000000 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Hotel.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.uva.roomBooking.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; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.OneToMany; -import jakarta.persistence.OneToOne; -import jakarta.persistence.Table; - -@Entity -@Table(name = "hotels") -// @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, -// property = "id") -public class Hotel { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Basic(optional = false) - private int id; - - @Basic(optional = false) - private String name; - - @JoinColumn(name = "address_id", referencedColumnName = "id") - @OneToOne(optional = false, cascade = CascadeType.ALL, fetch = FetchType.EAGER) - private Address address; - - @OneToMany(mappedBy = "hotel", fetch = FetchType.EAGER, cascade = CascadeType.ALL) - private List<Room> rooms; - - public Hotel() { - } - - public Hotel(int id, String name, Address address, List<Room> rooms) { - setId(id); - setName(name); - setAddress(address); - setRooms(rooms); - } - - public int getId() { - return this.id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return this.name; - } - - public void setName(String name) { - this.name = name; - } - - public Address getAddress() { - return this.address; - } - - public void setAddress(Address address) { - this.address = address; - } - - public List<Room> getRooms() { - return this.rooms; - } - - public void setRooms(List<Room> rooms) { - this.rooms = rooms; - rooms.forEach(room -> room.setHotel(this)); - } - -} diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Room.java b/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Room.java deleted file mode 100644 index 639dfdb0bd3be629b16c719373fa51c9a7584898..0000000000000000000000000000000000000000 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Room.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.uva.roomBooking.Models; - -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonIdentityInfo; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.ObjectIdGenerators; - -import jakarta.persistence.Basic; -import jakarta.persistence.CascadeType; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.OneToMany; -import jakarta.persistence.Table; - -@Entity -@Table(name = "rooms") -// @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, -// property = "id") -public class Room { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Basic(optional = false) - private int id; - - @ManyToOne - @JoinColumn(name = "hotel_id", referencedColumnName = "id") - @JsonIgnore - private Hotel hotel; - @Column(name = "room_number", nullable = false) - private String roomNumber; - @Column(name = "type", nullable = false) - private Tipo type; - @Column(name = "available", nullable = false) - private boolean available; - @JsonIgnore - @OneToMany(mappedBy = "roomId", fetch = FetchType.EAGER, cascade = CascadeType.ALL) - private List<Booking> bookings; - - public Room() { - } - - public Room(int id, Hotel hotelId, String roomNumber, Tipo type, boolean available, List<Booking> bookings) { - this.id = id; - this.hotel = hotelId; - this.roomNumber = roomNumber; - this.type = type; - this.available = available; - this.bookings = bookings; - } - - public void setId(int id) { - this.id = id; - } - - public int getId() { - return this.id; - } - - public void setHotel(Hotel hotelId) { - this.hotel = hotelId; - } - - public Hotel getHotel() { - return this.hotel; - } - - public void setRoomNumber(String roomNumber) { - this.roomNumber = roomNumber; - } - - public String getRoomNumber() { - return this.roomNumber; - } - - public void setType(Tipo type) { - this.type = type; - } - - public Tipo getType() { - return this.type; - } - - public void setAvailable(boolean available) { - this.available = available; - } - - public boolean isAvailable() { - return this.available; - } - - public List<Booking> getBookings() { - return this.bookings; - } - - public void setBookings(List<Booking> bookings) { - this.bookings = bookings; - } -} diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Tipo.java b/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Tipo.java deleted file mode 100644 index e1a48b53450e1f87ae070b1bf70bd6a9afc1ea34..0000000000000000000000000000000000000000 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/Tipo.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.uva.roomBooking.Models; - -public enum Tipo { - SINGLE, - DOUBLE, - SUITE -} diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/User.java b/java/services/bookings/src/main/java/com/uva/roomBooking/Models/User.java deleted file mode 100644 index c5373df6edc5e936d9c94f794ae36d3289d173d5..0000000000000000000000000000000000000000 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/User.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.uva.roomBooking.Models; - -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonIgnore; - -import jakarta.persistence.Basic; -import jakarta.persistence.CascadeType; -import jakarta.persistence.Entity; -import jakarta.persistence.EnumType; -import jakarta.persistence.Enumerated; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.OneToMany; -import jakarta.persistence.Table; - -@Entity -@Table(name = "users") -public class User { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Basic(optional = false) - private int id; - - @Basic(optional = false) - private String name; - - @Basic(optional = false) - private String email; - - @Basic(optional = false) - @Enumerated(EnumType.STRING) - private UserStatus status = UserStatus.NO_BOOKINGS; - - @JsonIgnore - @OneToMany(mappedBy = "userId", fetch = FetchType.EAGER, cascade = CascadeType.ALL) - private List<Booking> bookings; - - public User() { - } - - public User(int id, String name, String email, UserStatus status, List<Booking> bookings) { - setId(id); - setEmail(email); - setStatus(status); - setBookings(bookings); - } - - public int getId() { - return this.id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return this.name; - } - - public void setName(String name) { - this.name = name; - } - - public String getEmail() { - return this.email; - } - - public void setEmail(String email) { - this.email = email; - } - - public UserStatus getStatus() { - return this.status; - } - - public void setStatus(UserStatus status) { - this.status = status; - } - - public List<Booking> getBookings() { - return this.bookings; - } - - public void setBookings(List<Booking> bookings) { - this.bookings = bookings; - } -} diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/UserStatus.java b/java/services/bookings/src/main/java/com/uva/roomBooking/Models/UserStatus.java deleted file mode 100644 index 41adce4ba6df6332286f0971b7f8e43b9126e401..0000000000000000000000000000000000000000 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Models/UserStatus.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.uva.roomBooking.Models; - -public enum UserStatus { - NO_BOOKINGS, WITH_ACTIVE_BOOKINGS, WITH_INACTIVE_BOOKINGS; -} diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Repositories/HotelRepository.java b/java/services/bookings/src/main/java/com/uva/roomBooking/Repositories/HotelRepository.java deleted file mode 100644 index 290f129a7be376279300062d4bf3d7a614abefcc..0000000000000000000000000000000000000000 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Repositories/HotelRepository.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.uva.roomBooking.Repositories; - -import com.uva.roomBooking.Models.Hotel; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface HotelRepository extends JpaRepository<Hotel, Integer> { - -} diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Repositories/RoomRepository.java b/java/services/bookings/src/main/java/com/uva/roomBooking/Repositories/RoomRepository.java deleted file mode 100644 index 3df9937f1ba7dc7c8bc0aa839a7a93ffd0baa8de..0000000000000000000000000000000000000000 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Repositories/RoomRepository.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.uva.roomBooking.Repositories; - -import com.uva.roomBooking.Models.Room; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; - -import java.time.LocalDate; -import java.util.List; -import java.util.Optional; - -public interface RoomRepository extends JpaRepository<Room, Integer> { - - Optional<Room> findByIdAndHotelId(int id, int hotelId); - - // Encontrar todas las habitaciones de un hotel - List<Room> findAllByHotelId(int hotelId); - - // Encontrar habitaciones disponibles de un hotel en un rango de fechas - @Query(""" - SELECT r FROM Room r - WHERE r.hotel.id = ?1 - AND r.available = true - AND NOT EXISTS ( - SELECT b FROM Booking b - WHERE b.roomId.id = r.id - AND ( - b.endDate > ?2 - OR - b.startDate > ?3 - ) - ) - """) - List<Room> findAvailableRoomsByHotelAndDates( - int hotelId, LocalDate startDate, LocalDate endDate); -} diff --git a/java/services/bookings/src/main/java/com/uva/roomBooking/Repositories/UserRepository.java b/java/services/bookings/src/main/java/com/uva/roomBooking/Repositories/UserRepository.java deleted file mode 100644 index 5f02f6d4a3b2147d181b8db36736d85ccfd884b5..0000000000000000000000000000000000000000 --- a/java/services/bookings/src/main/java/com/uva/roomBooking/Repositories/UserRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.uva.roomBooking.Repositories; - -import org.springframework.data.jpa.repository.JpaRepository; - -import com.uva.roomBooking.Models.User; - -public interface UserRepository extends JpaRepository<User, Integer> { - -} diff --git a/java/services/bookings/target/classes/com/uva/bookings/Controllers/BookingController.class b/java/services/bookings/target/classes/com/uva/bookings/Controllers/BookingController.class new file mode 100644 index 0000000000000000000000000000000000000000..df36faa8a4aaad6b43a8c64632b8ef6c7608c91a Binary files /dev/null and b/java/services/bookings/target/classes/com/uva/bookings/Controllers/BookingController.class differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Exceptions/GlobalExceptionHandler.class b/java/services/bookings/target/classes/com/uva/bookings/Exceptions/GlobalExceptionHandler.class similarity index 52% rename from java/services/bookings/target/classes/com/uva/roomBooking/Exceptions/GlobalExceptionHandler.class rename to java/services/bookings/target/classes/com/uva/bookings/Exceptions/GlobalExceptionHandler.class index f37dcb6e7892f51ce598e55327a018f4c0c07810..af04e5fe6afffb285b6d0afb3e54aa27a6fca067 100644 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Exceptions/GlobalExceptionHandler.class and b/java/services/bookings/target/classes/com/uva/bookings/Exceptions/GlobalExceptionHandler.class differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Exceptions/HotelNotFoundException.class b/java/services/bookings/target/classes/com/uva/bookings/Exceptions/HotelNotFoundException.class similarity index 77% rename from java/services/bookings/target/classes/com/uva/roomBooking/Exceptions/HotelNotFoundException.class rename to java/services/bookings/target/classes/com/uva/bookings/Exceptions/HotelNotFoundException.class index 793b38320948c74b9d76e95aecaa98cdc0d52c49..27f817a237d4d0d3933261f906af9129e3ea05a2 100644 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Exceptions/HotelNotFoundException.class and b/java/services/bookings/target/classes/com/uva/bookings/Exceptions/HotelNotFoundException.class differ diff --git a/java/services/bookings/target/classes/com/uva/bookings/Exceptions/InvalidDateRangeException.class b/java/services/bookings/target/classes/com/uva/bookings/Exceptions/InvalidDateRangeException.class new file mode 100644 index 0000000000000000000000000000000000000000..74aaa2e5b4574c30a3456bf561bef81b43d9b7e6 Binary files /dev/null and b/java/services/bookings/target/classes/com/uva/bookings/Exceptions/InvalidDateRangeException.class differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Exceptions/InvalidRequestException.class b/java/services/bookings/target/classes/com/uva/bookings/Exceptions/InvalidRequestException.class similarity index 50% rename from java/services/bookings/target/classes/com/uva/roomBooking/Exceptions/InvalidRequestException.class rename to java/services/bookings/target/classes/com/uva/bookings/Exceptions/InvalidRequestException.class index d84f1067f65d5d0186d15cbdc59662bd3e47c3e7..449f756baf19e02459d425561349993b6fa894c1 100644 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Exceptions/InvalidRequestException.class and b/java/services/bookings/target/classes/com/uva/bookings/Exceptions/InvalidRequestException.class differ diff --git a/java/services/bookings/target/classes/com/uva/bookings/Models/Booking.class b/java/services/bookings/target/classes/com/uva/bookings/Models/Booking.class new file mode 100644 index 0000000000000000000000000000000000000000..3fade65200d9d54097c9dbcab3f0cd49ab153042 Binary files /dev/null and b/java/services/bookings/target/classes/com/uva/bookings/Models/Booking.class differ diff --git a/java/services/bookings/target/classes/com/uva/bookings/Repositories/BookingRepository.class b/java/services/bookings/target/classes/com/uva/bookings/Repositories/BookingRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..fd8eee6dec0c291fe8dcc4eee8ac6d6ba232e846 Binary files /dev/null and b/java/services/bookings/target/classes/com/uva/bookings/Repositories/BookingRepository.class differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/RoomBookingApplication.class b/java/services/bookings/target/classes/com/uva/bookings/bookingServiceApplication.class similarity index 59% rename from java/services/bookings/target/classes/com/uva/roomBooking/RoomBookingApplication.class rename to java/services/bookings/target/classes/com/uva/bookings/bookingServiceApplication.class index 93ff822c7862a70776fd6464fc805130d94c00dd..af8b7863a6b4bdaaec859c2f7b10b2963d599561 100644 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/RoomBookingApplication.class and b/java/services/bookings/target/classes/com/uva/bookings/bookingServiceApplication.class differ diff --git a/java/services/bookings/target/classes/com/uva/bookings/config/RestTemplateConfig.class b/java/services/bookings/target/classes/com/uva/bookings/config/RestTemplateConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..4d41aeb1804028479e51193554bac1e4b6aab2d9 Binary files /dev/null and b/java/services/bookings/target/classes/com/uva/bookings/config/RestTemplateConfig.class differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Controllers/BookingController.class b/java/services/bookings/target/classes/com/uva/roomBooking/Controllers/BookingController.class deleted file mode 100644 index 106d09044e7f06ac127f37d09474ee4ee71ef71d..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Controllers/BookingController.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Controllers/HotelController.class b/java/services/bookings/target/classes/com/uva/roomBooking/Controllers/HotelController.class deleted file mode 100644 index 9f1da0e949cc823f1693a7b646facdb4a185d0af..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Controllers/HotelController.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Controllers/UserController.class b/java/services/bookings/target/classes/com/uva/roomBooking/Controllers/UserController.class deleted file mode 100644 index 48250147622903d789c60ca7a7e10902b3c5fd5f..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Controllers/UserController.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Exceptions/InvalidDateRangeException.class b/java/services/bookings/target/classes/com/uva/roomBooking/Exceptions/InvalidDateRangeException.class deleted file mode 100644 index 908291f1b9e8fc99d59a86743b6e35a4c1b12e26..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Exceptions/InvalidDateRangeException.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Models/Address.class b/java/services/bookings/target/classes/com/uva/roomBooking/Models/Address.class deleted file mode 100644 index 577b9f74f32aac0e9b3eaa13a840ae59fd38bf09..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Models/Address.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Models/Booking.class b/java/services/bookings/target/classes/com/uva/roomBooking/Models/Booking.class deleted file mode 100644 index a5ee91b9b51857ae5a869f006c3311bd8c2c78be..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Models/Booking.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Models/Hotel.class b/java/services/bookings/target/classes/com/uva/roomBooking/Models/Hotel.class deleted file mode 100644 index d72ceb99fad6aca5b773352af067e684400e300e..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Models/Hotel.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Models/Room.class b/java/services/bookings/target/classes/com/uva/roomBooking/Models/Room.class deleted file mode 100644 index 639dfc6c14c9d8d35644111bc82e559c85320f64..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Models/Room.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Models/Tipo.class b/java/services/bookings/target/classes/com/uva/roomBooking/Models/Tipo.class deleted file mode 100644 index 5135c701a6b3615a52f22343bfe31eb6d574d0c1..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Models/Tipo.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Models/User.class b/java/services/bookings/target/classes/com/uva/roomBooking/Models/User.class deleted file mode 100644 index 394ebce81f001ce6d49d3ba0e61ad9849789bd7d..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Models/User.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Models/UserStatus.class b/java/services/bookings/target/classes/com/uva/roomBooking/Models/UserStatus.class deleted file mode 100644 index 61c762de029dfc346db4ec48cd71170419987eb9..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Models/UserStatus.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Repositories/BookingRepository.class b/java/services/bookings/target/classes/com/uva/roomBooking/Repositories/BookingRepository.class deleted file mode 100644 index acea7157a6e378b53cac42161cfad3721d990743..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Repositories/BookingRepository.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Repositories/HotelRepository.class b/java/services/bookings/target/classes/com/uva/roomBooking/Repositories/HotelRepository.class deleted file mode 100644 index b73aac1a1369502b5a75ca393138c15128208a85..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Repositories/HotelRepository.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Repositories/RoomRepository.class b/java/services/bookings/target/classes/com/uva/roomBooking/Repositories/RoomRepository.class deleted file mode 100644 index b3854e3d17c9d211309eb82205a68b60efa16539..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Repositories/RoomRepository.class and /dev/null differ diff --git a/java/services/bookings/target/classes/com/uva/roomBooking/Repositories/UserRepository.class b/java/services/bookings/target/classes/com/uva/roomBooking/Repositories/UserRepository.class deleted file mode 100644 index 85a2cf78e1629cccc1a35a91af8d6a0ca15c79c1..0000000000000000000000000000000000000000 Binary files a/java/services/bookings/target/classes/com/uva/roomBooking/Repositories/UserRepository.class and /dev/null differ