import { NextResponse } from "next/server";
import { getServerSession } from "next-auth";
import { authOptions } from "@/lib/auth";
import { createAttempt } from "@/lib/user-store";
import { QuizAttempt, QuizMode, Question } from "@/types/quiz";

export async function POST(request: Request) {
  const session = await getServerSession(authOptions);
  if (!session) {
    return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
  }

  const body = await request.json();
  const { questions, quizMode } = body as {
    questions: Question[];
    quizMode: QuizMode;
  };

  if (!questions || questions.length === 0) {
    return NextResponse.json({ error: "Questions are required" }, { status: 400 });
  }

  const now = new Date().toISOString();
  const attempt: QuizAttempt = {
    id: `att-${Date.now()}-${Math.random().toString(36).substring(2, 7)}`,
    userId: (session.user as { id?: string }).id || session.user?.name || "unknown",
    userName: session.user?.name || "Unknown",
    source: "advanced",
    quizMode: quizMode || "testing",
    questions,
    answers: questions.map((q) => ({ questionId: q.id, selectedAnswers: [] })),
    status: "in-progress",
    answeredCount: 0,
    totalQuestions: questions.length,
    correctCount: null,
    score: null,
    startedAt: now,
    completedAt: null,
    lastUpdatedAt: now,
  };

  await createAttempt(attempt);
  return NextResponse.json(attempt, { status: 201 });
}
