diff --git a/src/modules/exams/actions.ts b/src/modules/exams/actions.ts index b212168..8a2b79c 100644 --- a/src/modules/exams/actions.ts +++ b/src/modules/exams/actions.ts @@ -19,6 +19,7 @@ import { getExamGrades, getExamPreview, getExamSubjects, + getExamsByGradeId, persistAiGeneratedExamDraft, persistExamDraft, resolveSubjectGradeNames, @@ -39,6 +40,7 @@ import type { AiPreviewData, AiRewriteQuestionData, } from "./ai-pipeline" +import type { GradeExamsResult } from "./types" export type { AiPreviewData, AiRewriteQuestionData } from "./ai-pipeline" const ExamCreateSchema = z.object({ @@ -850,4 +852,30 @@ export async function getGradesAction(): Promise> { + try { + const ctx = await requirePermission(Permissions.EXAM_READ) + + if (!gradeId || gradeId.trim().length === 0) { + return failState("Invalid grade id") + } + + const result = await getExamsByGradeId({ + gradeId, + scope: ctx.dataScope, + }) + return successState(result) + } catch (error) { + if (error instanceof PermissionDeniedError) { + return failState(error.message) + } + return handleActionError(error) + } +} + diff --git a/src/modules/exams/components/exam-ai-generator.tsx b/src/modules/exams/components/exam-ai-generator.tsx index 497bff3..6f3131e 100644 --- a/src/modules/exams/components/exam-ai-generator.tsx +++ b/src/modules/exams/components/exam-ai-generator.tsx @@ -2,8 +2,6 @@ import type { Control, UseFormReturn } from "react-hook-form" import { useTranslations } from "next-intl" -import Link from "next/link" -import { Settings } from "lucide-react" import { FormField, FormItem, @@ -86,15 +84,7 @@ export function ExamAiGenerator({ name="aiProviderId" render={({ field }) => ( -
- {t("provider.label")} - -
+ {t("provider.label")}