import { prisma } from "@/lib/prisma"; import { getServerSession } from "next-auth/next"; import { authOptions } from "@/lib/auth-config"; import { generateUniqueActivationCode } from "@/lib/activation"; import { redirect } from "next/navigation"; import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; import { Select } from "@/components/ui/select"; import { z } from "zod"; export const dynamic = "force-dynamic"; const schema = z.object({ firstName: z.string().min(2), lastName: z.string().min(2), email: z.string().email(), classId: z.string().min(1), }); async function createStudent(formData: FormData) { "use server"; const session = await getServerSession(authOptions); if (!session?.user) redirect("/login"); if (!session.user.establishmentId && session.user.role !== "superadmin") redirect("/dashboard"); const parsed = schema.safeParse(Object.fromEntries(formData)); if (!parsed.success) return; const { code, expiresAt } = await generateUniqueActivationCode(); await prisma.student.create({ data: { firstName: parsed.data.firstName, lastName: parsed.data.lastName, email: parsed.data.email, classId: parsed.data.classId, activationCode: code, activationCodeExpiresAt: expiresAt, }, }); redirect("/dashboard/students"); } export default async function NewStudentPage() { const session = await getServerSession(authOptions); if (!session?.user) redirect("/login"); if (!session.user.establishmentId && session.user.role !== "superadmin") redirect("/dashboard"); const establishmentId = session.user.establishmentId; const classes = await prisma.class.findMany({ where: establishmentId ? { establishmentId } : {}, orderBy: { name: "asc" }, }); return (

Nouvel étudiant

Créer un étudiant
); }