import { NextRequest, NextResponse } from "next/server";
import { db } from "@/lib/db";
import { requirePageRole, resolveSchoolId } from "@/lib/auth";
import { handleApiError } from "@/lib/api-helpers";
import { normalizeArabicName } from "@/lib/constants";

/** فحص تطابق اسم الطالب أثناء التسجيل/التعديل - يعيد الطلبة المتطابقين */
export async function GET(req: NextRequest) {
  try {
    const user = await requirePageRole("students", "ADMIN", "ACCOUNTANT", "STAFF");
    const schoolId = await resolveSchoolId(user, req.nextUrl.searchParams.get("schoolId"));
    const { searchParams } = new URL(req.url);
    const name = searchParams.get("name")?.trim() ?? "";
    const excludeId = searchParams.get("excludeId")?.trim() ?? "";
    if (name.length < 3) return NextResponse.json({ matches: [] });
    const normalized = normalizeArabicName(name);
    if (!normalized) return NextResponse.json({ matches: [] });

    // جلب الطلبة النشطين في نفس المدرسة ومطابقتهم بالتوحيد
    const students = await db.student.findMany({
      where: { isActive: true, schoolId },
      select: { id: true, nameAr: true, studentCode: true, grade: true, classroom: true },
    });
    const matches = students
      .filter((s) => s.id !== excludeId && normalizeArabicName(s.nameAr) === normalized)
      .slice(0, 5);
    return NextResponse.json({ matches });
  } catch (err) {
    return handleApiError(err);
  }
}
