"use server"; import { revalidatePath } from "next/cache"; import { requirePermission, PermissionDeniedError, } from "@/shared/lib/auth-guard"; import { Permissions } from "@/shared/types/permissions"; import { publishLessonPlanHomework } from "./publish-service"; import type { ActionState } from "./types"; export async function publishLessonPlanHomeworkAction(input: { planId: string; blockId: string; classIds: string[]; availableAt?: string; dueAt?: string; }): Promise> { try { const ctx = await requirePermission( Permissions.LESSON_PLAN_PUBLISH, ); await requirePermission(Permissions.HOMEWORK_CREATE); const result = await publishLessonPlanHomework({ planId: input.planId, blockId: input.blockId, userId: ctx.userId, classIds: input.classIds, availableAt: input.availableAt ? new Date(input.availableAt) : undefined, dueAt: input.dueAt ? new Date(input.dueAt) : undefined, }); revalidatePath("/teacher/lesson-plans"); revalidatePath("/teacher/homework"); return { success: true, data: { examId: result.examId, assignmentId: result.assignmentId, }, }; } catch (e) { if (e instanceof PermissionDeniedError) return { success: false, message: e.message }; return { success: false, message: e instanceof Error ? e.message : "发布失败", }; } }