import type { Metadata } from "next";
import { requirePermission } from "@/lib/auth/session";
import { getFormsOverview, getPositions } from "@/lib/forms/queries";
import { checkFormsTables } from "@/lib/forms/schema";
import { PageHeader } from "@/components/ui/PageHeader";
import { FormsShell } from "@/components/forms/FormsShell";
import { PositionsPanel } from "@/components/forms/PositionsPanel";

export const metadata: Metadata = { title: "Ausschreibungen" };

// Fremde Datenbank — nie vorrendern oder zwischenspeichern.
export const dynamic = "force-dynamic";

export default async function PositionsPage() {
  const session = await requirePermission("forms.view");
  const canManage = Boolean(session.user.permissions?.includes("forms.manage"));

  const overview = await getFormsOverview();
  const [positions, tables] = overview.online
    ? await Promise.all([getPositions(), checkFormsTables()])
    : [[], {}];

  return (
    <div className="flex flex-col gap-5">
      <PageHeader
        eyebrow="Personal"
        title="Ausschreibungen"
        description="Offene Stellen der Website pflegen — samt Bewerbungsformular aus dem Feld-Baukasten."
      />
      <FormsShell
        overview={overview}
        tables={tables}
        // Der Bewerbungszähler je Stelle liest die Bewerbungstabelle mit.
        requiredTables={["avaria_positions", "avaria_applications"]}
        canManage={canManage}
        info={`${overview.activePositions} auf der Website sichtbar`}
      >
        <PositionsPanel positions={positions} canManage={canManage} />
      </FormsShell>
    </div>
  );
}
