import { notFound } from "next/navigation";
import { eq } from "drizzle-orm";
import { db, schema } from "@/lib/db";
import { services, getDepositAmountEur } from "@/lib/services";
import type { FormField, DocumentRequest } from "@/lib/forms/types";
import { isStripeConfigured } from "@/lib/stripe";
import DynamicForm from "@/components/public/DynamicForm";

export const dynamic = "force-dynamic";

export async function generateMetadata({
  params,
}: {
  params: Promise<{ slug: string }>;
}) {
  const { slug } = await params;
  const service = services.find((s) => s.slug === slug);
  return {
    title: service ? `${service.title} | Démarrer mon dossier` : "Formulaire",
    robots: { index: false, follow: false },
  };
}

export default async function FormulaireMarquesPage({
  params,
}: {
  params: Promise<{ slug: string }>;
}) {
  const { slug } = await params;
  const service = services.find(
    (s) => s.slug === slug && s.category === "marques"
  );
  if (!service || service.published === false) notFound();

  const tpl = (
    await db
      .select()
      .from(schema.formTemplate)
      .where(eq(schema.formTemplate.serviceSlug, slug))
      .limit(1)
  )[0];

  if (!tpl || !tpl.published) notFound();

  return (
    <DynamicForm
      serviceSlug={slug}
      title={tpl.title}
      description={tpl.description}
      fields={tpl.fields as FormField[]}
      documents={tpl.documentRequests as DocumentRequest[]}
      priceEur={service.priceEur ?? null}
      priceNote={service.priceNote ?? null}
      depositEur={getDepositAmountEur(service)}
      stripeEnabled={isStripeConfigured()}
    />
  );
}
