// src/app/api/admin/vacations/route.ts
import { NextRequest, NextResponse } from "next/server";
import { prisma } from "@/lib/prisma";
import { getAdminUser } from "@/lib/auth";

export async function GET(req: NextRequest) {
  const admin = await getAdminUser();
  if (!admin) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });

  const status = req.nextUrl.searchParams.get("status"); // "pending" | "approved" | "rejected" | null (all)
  const studentIdParam = req.nextUrl.searchParams.get("student_id");

  const where: Record<string, unknown> = {};

  if (status) {
    where.status = status;
  }

  if (studentIdParam) {
    const studentId = Number(studentIdParam);
    if (!Number.isInteger(studentId) || studentId <= 0) {
      return NextResponse.json({ error: "Invalid student_id" }, { status: 400 });
    }
    where.student_id = studentId;
  }

  const vacations = await prisma.student_vacations.findMany({
    where,
    include: {
      students: {
        select: { id: true, name: true, email: true, contact: true },
      },
    },
    orderBy: [{ status: "asc" }, { created_at: "desc" }],
  });

  return NextResponse.json({ data: vacations });
}