import Link from "next/link" import { EmptyState } from "@/shared/components/ui/empty-state" import { Badge } from "@/shared/components/ui/badge" import { Button } from "@/shared/components/ui/button" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/shared/components/ui/table" import { formatDate } from "@/shared/lib/utils" import { getHomeworkAssignments } from "@/modules/homework/data-access" import { getTeacherClasses } from "@/modules/classes/data-access" import { PenTool, PlusCircle } from "lucide-react" export const dynamic = "force-dynamic" type SearchParams = { [key: string]: string | string[] | undefined } const getParam = (params: SearchParams, key: string) => { const v = params[key] return Array.isArray(v) ? v[0] : v } export default async function AssignmentsPage({ searchParams }: { searchParams: Promise }) { const sp = await searchParams const classId = getParam(sp, "classId") || undefined const [assignments, classes] = await Promise.all([ getHomeworkAssignments({ classId: classId && classId !== "all" ? classId : undefined }), classId && classId !== "all" ? getTeacherClasses() : Promise.resolve([]), ]) const hasAssignments = assignments.length > 0 const className = classId && classId !== "all" ? classes.find((c) => c.id === classId)?.name : undefined return (

Assignments

{classId && classId !== "all" ? `Filtered by class: ${className ?? classId}` : "Manage homework assignments."}

{classId && classId !== "all" ? ( ) : null}
{!hasAssignments ? ( ) : (
Title Status Due Source Exam Created {assignments.map((a) => ( {a.title} {a.status} {a.dueAt ? formatDate(a.dueAt) : "-"} {a.sourceExamTitle} {formatDate(a.createdAt)} ))}
)}
) }