Skip to content
Snippets Groups Projects
Commit 12bb095a authored by migudel's avatar migudel :speech_balloon:
Browse files

Fixed deletion of hotels

parent 41ec7afe
Branches
No related tags found
1 merge request!11Fixed deletion of hotels
......@@ -7,13 +7,16 @@ 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
......@@ -22,10 +25,13 @@ import org.springframework.web.bind.annotation.*;
public class HotelController {
private final HotelRepository hotelRepository;
private final RoomRepository roomRepository;
private final BookingRepository bookingRepository;
public HotelController(HotelRepository hotelRepository, RoomRepository roomRepository) {
public HotelController(HotelRepository hotelRepository, RoomRepository roomRepository,
BookingRepository bookingRepository) {
this.hotelRepository = hotelRepository;
this.roomRepository = roomRepository;
this.bookingRepository = bookingRepository;
}
// Obtener todos los hoteles
......@@ -50,9 +56,11 @@ public class HotelController {
// 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);
}
......
......@@ -3,6 +3,8 @@ package com.uva.roomBooking.Repositories;
import com.uva.roomBooking.Models.Booking;
import jakarta.transaction.Transactional;
import java.time.LocalDate;
import java.util.List;
......@@ -17,8 +19,14 @@ public interface BookingRepository extends JpaRepository<Booking, Integer> {
List<Booking> findByRoomIdAndDateRange(@Param("roomId") int roomId, @Param("startDate") LocalDate startDate,
@Param("endDate") LocalDate endDate);
@Transactional
@Modifying
@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);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment