'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { databases, Query } from "../../lib/appwrite"; import { DATABASE_ID, COLLECTION_ID } from "../../lib/api"; import Header from "../../components/partials/header"; import { useTheme } from "../../context/ThemeContext"; export default function StaffBooking() { const { darkMode } = useTheme(); const router = useRouter(); const [appointmentDate] = useState(new Date().toISOString().split('T')[0]); const [stats, setStats] = useState({ totalTokens: 0, booked: 0, done: 0, missed: 0 }); const [loading, setLoading] = useState(true); useEffect(() => { const fetchStats = async () => { try { const today = new Date().toISOString().split('T')[0]; const statsResponse = await databases.listDocuments( DATABASE_ID, COLLECTION_ID, [Query.equal('date', today)] ); const allTokens = statsResponse.documents; const bookedTokens = allTokens.filter(t => t.status === 'booked'); const doneTokens = allTokens.filter(t => t.status === 'done'); const missedTokens = allTokens.filter(t => t.status === 'missed'); setStats({ totalTokens: allTokens.length, booked: bookedTokens.length, done: doneTokens.length, missed: missedTokens.length }); } catch (error) { console.error("Error fetching statistics:", error); } finally { setLoading(false); } }; fetchStats(); }, []); if (loading) { return
; } return (
{/* Statistics Overview */} {/*

Today's Overview

Total Tokens

{stats.totalTokens}

Pending

{stats.booked}

Completed

{stats.done}

*/} {/* Booking Options */}

New Booking

router.push('/pages/SingleBooking')} className={`p-6 cursor-pointer rounded-lg border transition-all hover:shadow-md ${darkMode ? 'bg-gray-800 border-gray-700 hover:border-blue-600 hover:bg-gray-700' : 'bg-white border-gray-200 hover:border-blue-500 hover:bg-blue-50' }`} >

Single Booking

Book one token for a patient

router.push('/pages/MultiBooking')} className={`p-6 cursor-pointer rounded-lg border transition-all hover:shadow-md ${darkMode ? 'bg-gray-800 border-gray-700 hover:border-blue-600 hover:bg-gray-700' : 'bg-white border-gray-200 hover:border-blue-500 hover:bg-blue-50' }`} >

Multi Booking

Book multiple tokens at once

Staff can book tokens for patients. Choose single booking for individual patients or multi-booking for group entries.

All tokens will be assigned for {new Date(appointmentDate).toLocaleDateString()}.

); }