import AulaSectionContent from "@/components/dashboard/AulaSectionContent";
import { Suspense } from "react";
import { notFound } from "next/navigation";
import { requireUser } from "@/lib/auth/session";
import { getAulaContext } from "@/lib/data/aula-context";
import AulaSelector from "@/components/dashboard/AulaSelector";
import { sectionLabels } from "@/lib/dashboard-navigation";
import DashboardBreadcrumbs from "@/components/dashboard/DashboardBreadcrumbs";
import SystemAlert from "@/components/ui/SystemAlert";
import Loading from "@/components/ui/Loading";
type Props = { params: Promise<{ seccion: string }>; searchParams: Promise<{ aula?: string }> };
export default function Page({ params, searchParams }: Props) {
  return (
    <Suspense fallback={<Loading />}>
      <Content params={params} searchParams={searchParams} />
    </Suspense>
  );
}
async function Content({ params, searchParams }: Props) {
  const { seccion } = await params;
  if (!Object.hasOwn(sectionLabels, seccion)) notFound();
  const section = seccion as keyof typeof sectionLabels;
  const user = await requireUser();
  if (section === "mis-tareas" && user.role !== "alumno") notFound();
  const { aulas, aula: active } = await getAulaContext();
  const requested = (await searchParams).aula;
  const aula = requested ? aulas.find((a) => String(a.aul_id) === requested) : active;
  if (requested && !aula) notFound();
  const label = sectionLabels[section];
  return (
    <section className="space-y-5 p-4 sm:p-6">
      <DashboardBreadcrumbs items={[{ label: "Inicio", href: "/" }, { label }]} />
      <h1 className="text-2xl font-semibold">{label}</h1>
      {!aula ? (
        <SystemAlert title="Sin aulas asignadas">No hay aulas online disponibles.</SystemAlert>
      ) : (
        <>
          <AulaSelector
            syncOnly
            syncOnMount={!!requested}
            selected={aula.aul_id}
            aulas={aulas.map((a) => ({
              id: a.aul_id,
              nombre: a.aul_curso_nombre || "Curso",
              clave: a.aul_clave_registro || "",
            }))}
          />
          <AulaSectionContent
            key={aula.aul_id}
            id={aula.aul_id}
            title={aula.aul_curso_nombre || "Curso"}
            code={aula.aul_clave_registro || ""}
            section={section}
            role={user.role}
          />
        </>
      )}
    </section>
  );
}
