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

export const dynamic = "force-dynamic";

export default async function TfpContractPage({ params }: { params: Promise<{ orderId: string }> }) {
  if (!(await isAdminSession())) redirect("/de/login?next=%2Fde%2Fadmin%2Forders");

  if (!(await hasPermission("orders_view"))) redirect("/de/account");

  const permissions = await getAllPermissions();
  const { orderId } = await params;

  await connectDB();
  const order = await Order.findById(orderId).lean();
  if (!order) notFound();
  const client = await Client.findById(order.clientId).select("billingStreet billingPostCode billingCity").lean();

  return (
    <main className="px-6 pt-4 pb-24 max-w-5xl mx-auto">
      <AdminNavLinks permissions={permissions} />
      <AdminPageHeader
        title={`TFP-Vertrag — ${order.characterOrConcept}`}
        subtitle='Wird als Entwurf angelegt. Danach in der Auftragsliste per „An Kunden senden" verschicken.'
      />
      <TfpContractForm
        orderId={orderId}
        defaults={{
          characterOrConcept: order.characterOrConcept,
          eventLocation: order.eventLocation,
          datePeriod: order.datePeriod,
          instagramHandle: order.instagramHandle,
          clientStreet: client?.billingStreet || "",
          clientPostCode: client?.billingPostCode || "",
          clientCity: client?.billingCity || "",
        }}
      />
    </main>
  );
}
