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

export const dynamic = "force-dynamic";

export default async function AdminNewOrderForClientPage({
  searchParams,
}: {
  searchParams: Promise<{ clientId?: string }>;
}) {
  if (!(await isAdminSession())) redirect("/de/login?next=%2Fde%2Fadmin%2Forders");
  if (!(await hasPermission("orders_create"))) redirect("/de/account");

  const { clientId } = await searchParams;
  const permissions = await getAllPermissions();

  await connectDB();
  // Kein role:"client"-Filter mehr (Bug-Fix, 26.09.2026) — siehe
  // adminCreateOrderForClientAction in actions/admin.ts, gleiche Ursache.
  const clients = await Client.find({}).select("name email birthDate").sort({ name: 1 }).lean();

  return (
    <main className="px-6 pt-4 pb-24 max-w-5xl mx-auto">
      <AdminNavLinks permissions={permissions} />
      <AdminPageHeader
        title="Neuer Auftrag für Kunden"
        subtitle="Für eine spontane Anfrage vor Ort — der Auftrag erscheint danach normal im Konto des ausgewählten Kunden, intern aber als vom Team erstellt markiert."
      />
      <NewOrderForClientForm
        clients={clients.map((c) => ({
          id: String(c._id),
          name: c.name,
          email: c.email,
          birthDate: c.birthDate ? new Date(c.birthDate).toISOString() : null,
        }))}
        defaultClientId={clientId}
      />
    </main>
  );
}
