import { redirect } from "next/navigation";
import { isAdminSession, hasPermission, getAllPermissions } from "@/lib/adminAuth";
import { connectDB } from "@/lib/db";
import { PriceTemplate } from "@/models/PriceTemplate";
import { AdminNavLinks } from "@/components/admin/AdminNavLinks";
import { AdminPageHeader } from "@/components/admin/AdminPageHeader";
import { AdminEmptyState } from "@/components/admin/AdminEmptyState";
import { NewPriceTemplateForm } from "@/components/admin/NewPriceTemplateForm";
import { PriceTemplateRow } from "@/components/admin/PriceTemplateRow";

export const dynamic = "force-dynamic";

export default async function AdminPriceTemplatesPage() {
  if (!(await isAdminSession())) redirect("/de/login?next=%2Fde%2Fadmin%2Forders");
  if (!(await hasPermission("price_templates_view"))) redirect("/de/account");

  const permissions = await getAllPermissions();
  await connectDB();
  const items = await PriceTemplate.find({}).sort({ sortOrder: 1 }).lean();

  return (
    <main className="px-6 pt-4 pb-24 max-w-5xl mx-auto">
      <AdminNavLinks permissions={permissions} />
      <AdminPageHeader
        title="Preisvorschlags-Vorlagen"
        subtitle="Wiederkehrende Kombinationen für den Preisvorschlag bei einem Auftrag — spart das Ausfüllen von Hand. Erscheinen als Auswahl im Preis-Formular eines Auftrags, Betrag und Notiz bleiben dort weiterhin editierbar."
      />

      {permissions.price_templates_create && <NewPriceTemplateForm />}

      <div className="flex flex-col gap-3">
        {items.map((item) => (
          <PriceTemplateRow
            key={String(item._id)}
            item={{ id: String(item._id), name: item.name, defaultAmount: item.defaultAmount, note: item.note }}
          />
        ))}
        {items.length === 0 && <AdminEmptyState message="Noch keine Preisvorlagen angelegt." />}
      </div>
    </main>
  );
}
