"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; export default function BookingPage() { const router = useRouter(); const [isLoading, setIsLoading] = useState(false); // State untuk form input const [formData, setFormData] = useState({ room: "Ruang T-301", date: "", startTime: "", endTime: "", purpose: "", }); const handleChange = (e: React.ChangeEvent) => { setFormData({ ...formData, [e.target.name]: e.target.value }); }; // --- LOGIKA VALIDASI KHUSUS --- const validateBookingRules = () => { // 1. Pastikan tanggal dan jam sudah diisi if (!formData.date || !formData.startTime) { alert("Mohon lengkapi Tanggal dan Jam Mulai terlebih dahulu."); return false; } // 2. Ambil Jam dari input (Format "HH:mm", kita ambil HH nya saja) const startHour = parseInt(formData.startTime.split(":")[0]); // 3. Cek apakah jam termasuk "Jam Khusus" (Diatas 21:00 ATAU Sebelum 06:00) // Note: startHour >= 21 artinya jam 21:00 ke atas. startHour < 6 artinya jam 00:00 - 05:59 const isSpecialTime = startHour >= 21 || startHour < 6; if (isSpecialTime) { // Hitung selisih hari antara HARI INI dan TANGGAL BOOKING const bookingDate = new Date(formData.date); const today = new Date(); // Reset jam ke 00:00:00 agar perhitungan murni berdasarkan tanggal bookingDate.setHours(0, 0, 0, 0); today.setHours(0, 0, 0, 0); // Hitung selisih waktu dalam milidetik const diffTime = bookingDate.getTime() - today.getTime(); // Konversi milidetik ke hari (1 hari = 1000ms * 3600detik * 24jam) const diffDays = diffTime / (1000 * 3600 * 24); // ATURAN: Jika selisih kurang dari 3 hari, tolak! if (diffDays < 3) { alert( `Gagal! Peminjaman di jam khusus (${formData.startTime}) harus dilakukan minimal 3 hari sebelumnya.\n\n` + `Jarak peminjaman Anda: ${diffDays} hari dari sekarang.` ); return false; // Validasi Gagal } } return true; // Validasi Berhasil }; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); // Jalankan validasi sebelum proses loading const isValid = validateBookingRules(); if (!isValid) { return; // Berhenti di sini jika validasi gagal } setIsLoading(true); // --- LOGIKA SEMENTARA (MOCK) --- console.log("Data Booking dikirim:", formData); setTimeout(() => { alert("Peminjaman Berhasil! Token akses Anda telah dibuat."); setIsLoading(false); router.push("/dashboard"); }, 1500); }; return (
{/* Header Form */}

Formulir Peminjaman Ruang

{/* Pilihan Ruangan */}
{/* Tanggal */}
{/* Waktu Mulai & Selesai */}

*Jam 21:00-06:00 butuh H-3

{/* Keperluan */}
{/* Tombol Submit */}
); }