"use client"; import { useEffect, useState } from "react"; import axios from "axios"; import { Settings2, RefreshCcw, AlertCircle, CheckCircle2 } from "lucide-react"; export default function ManageRoomsPage() { const [rooms, setRooms] = useState([]); const [loading, setLoading] = useState(true); const fetchRooms = async () => { try { const token = localStorage.getItem("token"); const res = await axios.get("http://172.17.110.6:8080/api/rooms", { headers: { Authorization: `Bearer ${token}` } }); setRooms(res.data.data); } catch (err: any) { console.error("Error Detail:", err.response?.data || err.message); alert("Error dari Server saat ambil ruangan: " + (err.response?.data?.error || err.message)); } finally { setLoading(false); } }; useEffect(() => { fetchRooms(); }, []); // FUNGSI UTAMA: Mengubah status ruangan (Available <-> Maintenance) const toggleRoomStatus = async (roomId: number, currentStatus: string) => { const newStatus = currentStatus === "Available" ? "Maintenance" : "Available"; try { const token = localStorage.getItem("token"); await axios.put(`http://172.17.110.6:8080/api/admin/rooms/${roomId}/status`, { status: newStatus }, { headers: { Authorization: `Bearer ${token}` } } ); alert(`Status Ruangan berhasil diubah menjadi ${newStatus}`); fetchRooms(); // Refresh data agar UI terupdate } catch (err: any) { console.error("Gagal update:", err.response?.data || err.message); alert("Gagal memperbarui status ruangan: " + (err.response?.data?.error || err.message)); } }; if (loading) return
Menghubungkan ke Database S-CLASS...
; return (

Manajemen Ruangan

Atur ketersediaan operasional setiap ruangan di Gedung D.

{/* TAMBAHKAN [...rooms].sort(...) SEBELUM .map */} {[...rooms] .sort((a, b) => a.name.localeCompare(b.name)) .map((room) => (
{room.category} • {room.floor}

{room.name}

{room.status === 'Available' ? : } {room.status}
))}
); }