import type { JSX } from "react" import { ClipboardList } from "lucide-react" import { EmptyState } from "@/shared/components/ui/empty-state" import { getAuthContext } from "@/shared/lib/auth-guard" import { getAdminClassesForScheduling, getScheduleChanges, getTeachersForScheduling, } from "@/modules/scheduling/data-access" import { ScheduleChangeForm } from "@/modules/scheduling/components/schedule-change-form" import { ScheduleChangeList } from "@/modules/scheduling/components/schedule-change-list" export const dynamic = "force-dynamic" export default async function TeacherScheduleChangesPage(): Promise { const ctx = await getAuthContext() // Teachers see only their own requests; admins landing here see all. const requesterId = ctx.roles.includes("admin") ? undefined : ctx.userId const [classes, teachers, items] = await Promise.all([ getAdminClassesForScheduling(), getTeachersForScheduling(), getScheduleChanges({ requesterId }), ]) const classOptions = classes.map((c) => ({ id: c.id, name: c.name, grade: c.grade })) const teacherOptions = teachers.map((t) => ({ id: t.id, name: t.name ?? "Unknown", email: t.email ?? "", })) return (

Schedule Change Requests

Submit a schedule change or substitute teacher request, and track its status.

{classOptions.length === 0 ? ( ) : (

My Requests

{items.length === 0 ? ( ) : ( )}
)}
) }