import { db } from "@/lib/db";
import { curso, clase } from "@/db/schema";
import { eq, and } from "drizzle-orm";
import { getServerSession } from "next-auth";
import { authOptions } from "@/lib/auth";
import { notFound } from "next/navigation";
import ClasesClient from "./ClasesClient";
import { getCursoWithColegio } from "@/lib/mariadb-relations";

export const dynamic = "force-dynamic";

export default async function AdminClasesPage({ params }: { params: Promise<{ cursoId: string }> }) {
  const { cursoId } = await params;
  const session = await getServerSession(authOptions);
  const role = session?.user?.role;
  const colegioId = session?.user?.colegioId;

  const cursoData = await getCursoWithColegio(cursoId);
  if (!cursoData) notFound();

  if (role === "ADMIN_COLEGIO" && colegioId && cursoData.colegioId !== colegioId) notFound();

  const clases = await db.query.clase.findMany({
    where: and(eq(clase.cursoId, cursoId), eq(clase.activo, true)),
  });
  clases.sort((a, b) => a.numero - b.numero);

  return <ClasesClient curso={cursoData} clases={clases} />;
}
