import { getTranslations } from "next-intl/server" import { getAuthContext } from "@/shared/lib/auth-guard" import { getAvailableCoursesForStudent, getStudentSelections } from "@/modules/elective/data-access-selections" import { StudentSelectionView } from "@/modules/elective/components/student-selection-view" import { ElectiveFilters } from "@/modules/elective/components/elective-filters" import { getParam, type SearchParams } from "@/shared/lib/search-params" export const dynamic = "force-dynamic" export default async function StudentElectivePage({ searchParams, }: { searchParams: Promise }) { const t = await getTranslations("elective") const ctx = await getAuthContext() const studentId = ctx.userId const [sp, availableCourses, mySelections] = await Promise.all([ searchParams, getAvailableCoursesForStudent(studentId), getStudentSelections(studentId), ]) const q = (getParam(sp, "q") || "").toLowerCase().trim() const modeFilter = getParam(sp, "mode") || "all" const filteredCourses = availableCourses.filter((c) => { if (q && !c.name.toLowerCase().includes(q) && !(c.teacherName?.toLowerCase().includes(q) ?? false)) return false if (modeFilter !== "all" && c.selectionMode !== modeFilter) return false return true }) return (

{t("title.student")}

{t("description.student")}

{availableCourses.length > 0 && }
) }