import { prisma } from "@/lib/prisma"; import { notFound } from "next/navigation"; import Link from "next/link"; interface Props { params: Promise<{ quizId: string }>; } export default async function AdminQuizAttemptsPage({ params }: Props) { const { quizId } = await params; const quiz = await prisma.quiz.findUnique({ where: { id: quizId }, include: { questions: { orderBy: { order: "asc" } }, attempts: { orderBy: { completedAt: "desc" } }, lesson: { select: { title: true, module: { select: { course: { select: { title: true } }, }, }, }, }, }, }); if (!quiz) notFound(); const userIds = [...new Set(quiz.attempts.map((a) => a.userId))]; const users = await prisma.user.findMany({ where: { id: { in: userIds } }, select: { id: true, name: true, email: true }, }); const userMap = Object.fromEntries(users.map((u) => [u.id, u])); return (

{quiz.lesson.title}

{quiz.lesson.module.course.title} · {quiz.questions.length} вопросов · {quiz.attempts.length} ответов

{quiz.attempts.length === 0 ? (

Ответов пока нет

) : (
{quiz.attempts.map((attempt) => { const answers = attempt.answers as Record; const user = userMap[attempt.userId]; const date = new Date(attempt.completedAt).toLocaleString("ru-RU", { day: "2-digit", month: "2-digit", year: "numeric", hour: "2-digit", minute: "2-digit", }); return (

{user?.name ?? "—"}

{user?.email ?? attempt.userId}

{date}
{quiz.questions.map((q, idx) => (

{idx + 1}. {q.text}

{answers[q.id]?.trim() || }

))}
); })}
)}
); }