import { NextResponse } from "next/server";
import { api } from "../../../../convex/_generated/api";
import { q } from "@/lib/convex-server";
import { getCurrentUser, canAny } from "@/lib/auth";

/** Availability + per-night pricing of every active apartment for a date range. */
export async function GET(req: Request) {
  const user = await getCurrentUser();
  if (!user || !canAny(user, "reservations.view", "calendar.view")) return NextResponse.json({ error: "Forbidden" }, { status: 403 });
  const sp = new URL(req.url).searchParams;
  const checkIn = sp.get("checkIn");
  const checkOut = sp.get("checkOut");
  if (!checkIn || !checkOut) return NextResponse.json({ error: "Missing dates" }, { status: 400 });
  if (!(checkOut > checkIn)) return NextResponse.json({ error: "Invalid range" }, { status: 400 });
  const data = await q(api.inventoryOps.availabilityBoard, { checkIn, checkOut, excludeReservationId: (sp.get("exclude") ?? undefined) as never });
  return NextResponse.json(data, { headers: { "Cache-Control": "private, no-store" } });
}
