import { NextResponse } from "next/server";
import { prisma } from "@/lib/prisma";
import { requireRole } from "@/lib/auth";
import { clampDemoValidDays, getDemoValidDays, setDemoValidDays } from "@/lib/demo-access";

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

  const [requests, defaultValidDays] = await Promise.all([
    prisma.demoRequest.findMany({
      orderBy: { createdAt: "desc" },
    }),
    getDemoValidDays(),
  ]);

  return NextResponse.json({ requests, defaultValidDays });
}

/** Central admin sets how many days a demo request stays usable. */
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();
    const days = clampDemoValidDays(body.validDays, -1);
    if (days < 1) {
      return NextResponse.json({ error: "INVALID_DAYS" }, { status: 400 });
    }
    const saved = await setDemoValidDays(days);
    return NextResponse.json({ ok: true, defaultValidDays: saved });
  } catch {
    return NextResponse.json({ error: "Could not save demo validity" }, { status: 500 });
  }
}
