import { NextRequest, NextResponse } from "next/server";
import { requireAdmin, unauthorized } from "@/lib/admin-auth";
import { logAdminActivity } from "@/lib/admin-activity";
import {
  registrationSummary,
  reportByArrivalDate,
  reportByState,
} from "@/lib/admin-reports";
import { requestMeta } from "@/lib/request-meta";

export async function GET(req: NextRequest) {
  const admin = await requireAdmin();
  if (!admin) return unauthorized();

  const meta = requestMeta(req);
  const [summary, byState, byArrival] = await Promise.all([
    registrationSummary(),
    reportByState(),
    reportByArrivalDate(),
  ]);

  await logAdminActivity({
    adminId: admin.id,
    username: admin.username,
    action: "view_reports",
    resource: "reports",
    outcome: "success",
    ip: meta.ip,
    userAgent: meta.userAgent,
  });

  return NextResponse.json({
    ok: true,
    summary,
    by_state: byState,
    by_arrival_date: byArrival,
  });
}
