import React, { useEffect } from 'react'; import { Link } from 'react-router-dom'; import { AccessTimeIcon, KeyboardArrowRightIcon, MenuBookIcon, PeopleIcon, SchoolIcon } from '@mui/icons-material'; import useTimetableStore from '../../stores/timetableStore'; import { useUser } from '../../contexts/UserContext'; const MyClassesPage: React.FC = () => { const { profile } = useUser(); const { myClasses, myClassesLoading, myClassesError, fetchMyClasses, } = useTimetableStore(); useEffect(() => { fetchMyClasses(); }, [fetchMyClasses]); const getRoleLabel = (role: string) => { switch (role) { case 'teacher': return { text: 'Teacher', color: 'bg-purple-100 text-purple-700' }; case 'student': return { text: 'Student', color: 'bg-green-100 text-green-700' }; case 'assistant': return { text: 'Assistant', color: 'bg-blue-100 text-blue-700' }; default: return { text: role, color: 'bg-gray-100 text-gray-700' }; } }; const getStatusLabel = (status: string) => { switch (status) { case 'active': return { text: 'Active', color: 'bg-green-100 text-green-700' }; case 'pending': return { text: 'Pending', color: 'bg-yellow-100 text-yellow-700' }; case 'completed': return { text: 'Completed', color: 'bg-gray-100 text-gray-700' }; case 'cancelled': return { text: 'Cancelled', color: 'bg-red-100 text-red-700' }; default: return { text: status, color: 'bg-gray-100 text-gray-700' }; } }; if (myClassesLoading) { return (
); } if (myClassesError) { return (

Error loading your classes: {myClassesError}

); } // Separate classes by role const teachingClasses = myClasses.filter(c => c.role === 'teacher' || c.role === 'assistant'); const enrolledClasses = myClasses.filter(c => c.role === 'student'); return (
{/* Header */}

My Classes

Manage your enrolled classes and teaching assignments

{/* Teaching Section */} {teachingClasses.length > 0 && (

Teaching

{teachingClasses.length}
{teachingClasses.map((classItem) => (

{classItem.class?.name}

{classItem.class?.code && (

{classItem.class.code}

)}

{classItem.class?.description || 'No description'}

{getRoleLabel(classItem.role).text} {getStatusLabel(classItem.status).text}
{classItem.class?.enrolled_count || 0} students
{classItem.class?.academic_year && (
{classItem.class.academic_year}
)}
))}
)} {/* Enrolled Section */} {enrolledClasses.length > 0 && (

Enrolled

{enrolledClasses.length}
{enrolledClasses.map((classItem) => (

{classItem.class?.name}

{classItem.class?.code && (

{classItem.class.code}

)}

{classItem.class?.description || 'No description'}

{getStatusLabel(classItem.status).text}
{classItem.class?.teachers?.[0]?.first_name} {classItem.class?.teachers?.[0]?.last_name}
{classItem.class?.academic_year && (
{classItem.class.academic_year}
)}
))}
)} {/* Empty State */} {myClasses.length === 0 && (

No classes found

You are not enrolled in or teaching any classes yet.

Browse Available Classes
)}
); }; export default MyClassesPage;