'use client'; import { useSession } from 'next-auth/react'; import { useEffect, useState } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Users, GraduationCap, BookOpen, Calendar, FileText, School, Building, Clock } from 'lucide-react'; import Link from 'next/link'; import { DashboardLayout } from '@/components/dashboard-layout'; import { Spinner } from '@/components/ui/spinner' interface DashboardStats { teachers: number; students: number; classes: number; sections: number; periods: number; partials: number; } export default function AdminDashboard() { const { data: session } = useSession(); const [stats, setStats] = useState({ teachers: 0, students: 0, classes: 0, sections: 0, periods: 0, partials: 0, }); const [loading, setLoading] = useState(true); useEffect(() => { fetchStats(); }, []); const fetchStats = async () => { try { const response = await fetch('/api/admin/stats'); if (response.ok) { const data = await response.json(); setStats(data); } } catch (error) { console.error('Error fetching stats:', error); } finally { setLoading(false); } }; const statCards = [ { title: 'Profesores', value: stats.teachers, icon: Users, color: 'text-blue-600', bgColor: 'bg-blue-50', href: '/admin/teachers', }, { title: 'Estudiantes', value: stats.students, icon: GraduationCap, color: 'text-green-600', bgColor: 'bg-green-50', href: '/admin/students', }, { title: 'Clases', value: stats.classes, icon: BookOpen, color: 'text-purple-600', bgColor: 'bg-purple-50', href: '/admin/classes', }, { title: 'Paralelos', value: stats.sections, icon: School, color: 'text-orange-600', bgColor: 'bg-orange-50', href: '/admin/sections', }, { title: 'Periodos', value: stats.periods, icon: Calendar, color: 'text-red-600', bgColor: 'bg-red-50', href: '/admin/periods', }, { title: 'Parciales', value: stats.partials, icon: FileText, color: 'text-indigo-600', bgColor: 'bg-indigo-50', href: '/admin/partials', }, ]; if (loading) { return (
); } const breadcrumbs = [ { label: "Dashboard" } ] return (

Dashboard Administrativo

Bienvenido, {session?.user?.firstName} {session?.user?.lastName}

{statCards.map((card) => { const Icon = card.icon; return ( {card.title}
{card.value}

Total registrado

); })}
{/*

Gestión del Sistema

Gestionar Profesores

Crear, editar y eliminar profesores

Gestionar Estudiantes

Crear, editar y eliminar estudiantes

Períodos Académicos

Gestionar períodos académicos

Gestionar Clases

Crear y administrar clases

Gestionar Paralelos

Crear y administrar paralelos

Gestionar Parciales

Configurar períodos de parciales

*/}
); }