import prisma from "@/lib/prisma";
import { getSessionUser } from "@/lib/auth";
import { PageHeader } from "@/components/layout/PageHeader";
import StudentMaterialsClient from "./StudentMaterialsClient";

export default async function StudentMaterialsPage() {
  const user = await getSessionUser();
  if (!user || !user.classId) return null;

  const materials = await prisma.material.findMany({
    where: {
      teacherSubject: { classId: user.classId },
      isPublished: true,
    },
    include: {
      teacherSubject: {
        include: {
          subject: true,
          teacher: true,
        },
      },
      attachments: true,
    },
    orderBy: [{ teacherSubject: { subject: { name: "asc" } } }, { meetingNumber: "asc" }],
  });

  // Extract unique subjects
  const subjectsMap = new Map();
  materials.forEach((m) => {
    const s = m.teacherSubject.subject;
    if (!subjectsMap.has(s.id)) {
      subjectsMap.set(s.id, s);
    }
  });
  const subjects = Array.from(subjectsMap.values());

  return (
    <div className="space-y-6">
      <PageHeader
        title="Materi Pembelajaran Kelas"
        description="Pelajari modul ajar, rangkuman konsep, tonton video pembelajaran, dan unduh dokumen materi."
        breadcrumbs={[
          { label: "Dashboard", href: "/student/dashboard" },
          { label: "Materi Pembelajaran" },
        ]}
      />

      <StudentMaterialsClient
        initialMaterials={materials}
        subjects={subjects}
      />
    </div>
  );
}
