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 e3c13ce8744e73bb3259c34011ef330cf236f701..7e5fe940402ad23ee9faf1d2508d6ea69c029ab8 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 @@ -8,6 +8,10 @@ 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.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -53,9 +57,32 @@ public class BookingController { return bookingRepository.save(booking); } - @DeleteMapping("/{id}") - public void deleteBooking(@PathVariable Integer id) { - bookingRepository.deleteById(id); + @GetMapping("/{id}") + public Booking getBookingById(@PathVariable Integer id) { + return bookingRepository.findById(id) + .orElseThrow(() -> new RuntimeException("Booking not found")); } + + @DeleteMapping("/{id}") + @Transactional + public ResponseEntity<String> deleteBooking(@PathVariable Integer id) { + try { + if (!bookingRepository.existsById(id)) { + return ResponseEntity.status(HttpStatus.NOT_FOUND) + .body("Booking not found with id: " + id); + } + + bookingRepository.deleteBookingById(id); + + return ResponseEntity.ok("Booking deleted successfully"); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("Error deleting booking: " + e.getMessage()); + } + } } + + + + diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java b/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java index a010a3a19ccfbb0fafd588c4fb7a52cb530897d9..54bbc5c4a24dd8250f426b55a5d9f139a0e24a15 100644 --- a/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java +++ b/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java @@ -7,6 +7,7 @@ import java.time.LocalDate; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -15,4 +16,10 @@ 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") List<Booking> findByRoomIdAndDateRange(@Param("roomId") int roomId, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate); + + @Modifying + @Query("DELETE FROM Booking b WHERE b.id = :id") + void deleteBookingById(@Param("id") Integer id); + + }