@@ -22,7 +22,16 @@ router.get('/', optionalAuth, [
2222 query ( 'limit' ) . optional ( ) . isInt ( { min : 1 , max : 100 } )
2323] , asyncHandler ( roomController . getAllRooms ) ) ;
2424
25- // Get room by ID
25+ // Get room types summary - MUST be before /:id route
26+ router . get ( '/types/summary' , optionalAuth , asyncHandler ( roomController . getRoomTypesSummary ) ) ;
27+
28+ // Get room availability for date range - MUST be before /:id route
29+ router . get ( '/availability/check' , optionalAuth , [
30+ query ( 'start_date' ) . optional ( ) . isDate ( ) ,
31+ query ( 'end_date' ) . optional ( ) . isDate ( )
32+ ] , asyncHandler ( roomController . getRoomAvailability ) ) ;
33+
34+ // Get room by ID - MUST be after specific routes to avoid catching them
2635router . get ( '/:id' , optionalAuth , asyncHandler ( roomController . getRoomById ) ) ;
2736
2837// Create new room (admin/manager only)
@@ -39,18 +48,9 @@ router.put('/:id', authenticateToken, authorizeRoles('admin', 'manager'), asyncH
3948// Delete room (admin only)
4049router . delete ( '/:id' , authenticateToken , authorizeRoles ( 'admin' ) , asyncHandler ( roomController . deleteRoom ) ) ;
4150
42- // Get room availability for date range
43- router . get ( '/availability/check' , optionalAuth , [
44- query ( 'start_date' ) . optional ( ) . isDate ( ) ,
45- query ( 'end_date' ) . optional ( ) . isDate ( )
46- ] , asyncHandler ( roomController . getRoomAvailability ) ) ;
47-
4851// Update room status (admin/manager only)
4952router . patch ( '/:id/status' , [
5053 body ( 'status' ) . isIn ( [ 'available' , 'occupied' , 'maintenance' , 'cleaning' ] ) . withMessage ( 'Invalid room status' )
5154] , authenticateToken , authorizeRoles ( 'admin' , 'manager' ) , asyncHandler ( roomController . updateRoomStatus ) ) ;
5255
53- // Get room types summary
54- router . get ( '/types/summary' , optionalAuth , asyncHandler ( roomController . getRoomTypesSummary ) ) ;
55-
5656module . exports = router ;
0 commit comments