import { notFound } from "next/navigation";
import { prisma } from "@/lib/prisma";
import { QuizEngine } from "@/components/quiz/QuizEngine";
import { getServerSession } from "next-auth";
import { authOptions } from "@/lib/auth";

interface Props {
  params: { slug: string };
  searchParams: { guest?: string };
}

async function getQuizWithQuestions(slug: string) {
  return prisma.quiz.findUnique({
    where: { slug, isPublished: true },
    select: {
      id: true,
      title: true,
      timeLimit: true,
      difficulty: true,
      isGuestAllowed: true,
      questions: {
        orderBy: { order: "asc" },
        select: {
          id: true,
          content: true,
          image: true,
          explanation: true,
          points: true,
          options: {
            orderBy: { order: "asc" },
            select: { id: true, content: true, isCorrect: true, order: true },
          },
        },
      },
    },
  });
}

export default async function QuizPlayPage({ params, searchParams }: Props) {
  const quiz = await getQuizWithQuestions(params.slug);
  if (!quiz) notFound();

  const session = await getServerSession(authOptions);
  const isGuest = searchParams.guest === "true" || !session;

  if (!quiz.isGuestAllowed && isGuest) {
    return (
      <div className="min-h-screen flex items-center justify-center p-4">
        <div className="text-center">
          <h2 className="text-2xl font-bold mb-2">Login Diperlukan</h2>
          <p className="text-muted-foreground mb-4">Quiz ini membutuhkan akun untuk dimainkan.</p>
          <a href="/login" className="px-6 py-3 gradient-brand text-white rounded-xl font-semibold">
            Masuk Sekarang
          </a>
        </div>
      </div>
    );
  }

  return (
    <QuizEngine
      quiz={quiz}
      questions={quiz.questions}
      isGuest={isGuest}
    />
  );
}
