import { useEffect, useState } from 'react'; import { supabase } from '../lib/supabase'; import { useAuth } from '../contexts/AuthContext'; interface DashboardStats { visitorsToday: number; activeComplaints: number; pendingVisitors: number; recentNotices: any[]; } export default function Dashboard() { const { user } = useAuth(); const [stats, setStats] = useState({ visitorsToday: 0, activeComplaints: 0, pendingVisitors: 0, recentNotices: [], }); useEffect(() => { const fetchDashboardData = async () => { const today = new Date(); today.setHours(0, 0, 0, 0); const [visitorsResult, complaintsResult, pendingResult, noticesResult] = await Promise.all([ supabase .from('visitors') .select('count') .gte('created_at', today.toISOString()), supabase .from('complaints') .select('count') .eq('status', 'open'), supabase .from('visitors') .select('count') .eq('status', 'pending'), supabase .from('notices') .select('*') .order('created_at', { ascending: false }) .limit(5), ]); setStats({ visitorsToday: visitorsResult.count || 0, activeComplaints: complaintsResult.count || 0, pendingVisitors: pendingResult.count || 0, recentNotices: noticesResult.data || [], }); }; fetchDashboardData(); }, []); return (

Dashboard

Today's Visitors

{stats.visitorsToday}

Active Complaints

{stats.activeComplaints}

Pending Visitors

{stats.pendingVisitors}

Recent Notices

{stats.recentNotices.map((notice) => (

{notice.title}

{notice.content}

{new Date(notice.created_at).toLocaleDateString()}

))}
); }