import { NextResponse } from "next/server";
import { requireRole } from "@/lib/auth";
import { clampInt, getUploadPolicy, setUploadPolicy } from "@/lib/upload-policy";

/** Central panel → upload policy: image size / dimension and document (PDF)
    size limits applied to every institution's uploads. */

export async function GET() {
  const session = await requireRole("SUPER_ADMIN");
  if (!session) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
  return NextResponse.json(await getUploadPolicy());
}

export async function PUT(req: Request) {
  const session = await requireRole("SUPER_ADMIN");
  if (!session) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });

  try {
    const body = (await req.json()) as Record<string, unknown>;
    const current = await getUploadPolicy();
    const policy = {
      imageMaxKb: clampInt(body.imageMaxKb, 50, 20480, current.imageMaxKb),
      imageMaxDim: clampInt(body.imageMaxDim, 128, 4096, current.imageMaxDim),
      docMaxKb: clampInt(body.docMaxKb, 50, 20480, current.docMaxKb),
    };
    const saved = await setUploadPolicy(policy);
    return NextResponse.json({ ok: true, ...saved });
  } catch {
    return NextResponse.json({ error: "Could not save upload policy" }, { status: 500 });
  }
}
