import { NextResponse } from "next/server";
import { prisma } from "@/lib/prisma";
import { requireAnyRole } from "@/lib/auth";

/** Admission inquiries for the institution's desk (admin + teacher). */
export async function GET() {
  const session = await requireAnyRole(["INSTITUTION_ADMIN", "TEACHER"]);
  if (!session || !session.institutionId) {
    return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
  }

  const inquiries = await prisma.admissionInquiry.findMany({
    where: { institutionId: session.institutionId },
    orderBy: { createdAt: "desc" },
    include: { classItem: { select: { name: true, nameBn: true } } },
  });

  return NextResponse.json({ inquiries });
}

/** Record a new inquiry from the desk (walk-in / phone). */
export async function POST(req: Request) {
  const session = await requireAnyRole(["INSTITUTION_ADMIN", "TEACHER"]);
  if (!session || !session.institutionId) {
    return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
  }

  try {
    const body = await req.json();
    const studentName = String(body.studentName ?? "").trim();
    const phone = String(body.phone ?? "").trim();
    const guardianName = String(body.guardianName ?? "").trim() || null;
    const note = String(body.note ?? "").trim() || null;
    const classItemId = Number(body.classItemId) || null;

    if (!studentName || !phone) {
      return NextResponse.json({ error: "Missing fields" }, { status: 400 });
    }

    const inquiry = await prisma.admissionInquiry.create({
      data: {
        institutionId: session.institutionId,
        studentName,
        guardianName,
        phone,
        note,
        classItemId,
        status: "NEW",
      },
      include: { classItem: { select: { name: true, nameBn: true } } },
    });
    return NextResponse.json({ inquiry });
  } catch {
    return NextResponse.json({ error: "Could not create inquiry" }, { status: 500 });
  }
}
