import type { Metadata } from "next";
import { notFound } from "next/navigation";

import JsonLd from "@/components/seo/JsonLd";
import RoofPageTemplate from "@/components/roof/RoofPageTemplate";
import { SITE_URL } from "@/lib/seo";
import { getAllToitureSlugs, getToiture } from "@/lib/wp/queries/toiture";
import { breadcrumbJsonLd, wpSeoToMetadata } from "@/lib/wp/seoToMetadata";
import { toRoofPageData } from "@/lib/wp/toRoofPageData";

// Pages toitures pilotées par WordPress (CPT `toiture`), rendues par le
// template d'ORIGINE (RoofPageTemplate) via le mapper inverse toRoofPageData
// (parité pixel avec la version pré-CMS, fallback codé champ à champ).
// Le FAQPage JSON-LD est émis ici (comme buildRoofPageSeo à l'origine et
// l'option json_ld du block faq côté WP), à partir des FAQ mappées.
export const dynamicParams = true;

export async function generateStaticParams() {
  const slugs = await getAllToitureSlugs();
  return slugs.map((slug) => ({ slug }));
}

export async function generateMetadata({
  params,
}: {
  params: Promise<{ slug: string }>;
}): Promise<Metadata> {
  const { slug } = await params;
  const toiture = await getToiture(slug);
  if (!toiture) return {};

  return wpSeoToMetadata(toiture.seo, {
    title: toiture.title ?? undefined,
    canonical: `${SITE_URL}/toitures/${slug}`,
  });
}

export default async function Page({
  params,
}: {
  params: Promise<{ slug: string }>;
}) {
  const { slug } = await params;
  const toiture = await getToiture(slug);
  if (!toiture) notFound();

  const page = toRoofPageData(toiture);

  return (
    <div className="min-h-screen bg-background">
      {page.faq.length > 0 && (
        <JsonLd
          id={`toiture-${slug}-faq-jsonld`}
          data={{
            "@context": "https://schema.org",
            "@type": "FAQPage",
            mainEntity: page.faq.map((item) => ({
              "@type": "Question",
              name: item.q,
              acceptedAnswer: {
                "@type": "Answer",
                text: item.a,
              },
            })),
          }}
        />
      )}
      <JsonLd
        id={`toiture-${slug}-breadcrumb-jsonld`}
        data={breadcrumbJsonLd([
          { name: "Accueil", url: `${SITE_URL}/` },
          { name: "Toitures", url: `${SITE_URL}/toitures` },
          { name: toiture.title ?? slug, url: `${SITE_URL}/toitures/${slug}` },
        ])}
      />
      <RoofPageTemplate page={page} />
    </div>
  );
}
