import type { Metadata } from "next";

import JsonLd from "@/components/seo/JsonLd";
import { buildMetadata, SITE_URL } from "@/lib/seo";
import { faqPageJsonLd } from "@/lib/wp/faqJsonLd";
import { getWpPage } from "@/lib/wp/queries/page";
import { breadcrumbJsonLd, wpSeoToMetadata } from "@/lib/wp/seoToMetadata";
import type { WpPage } from "@/lib/wp/types";
import DevenirApplicateurView from "./view-client";

const WP_URI = "/devenir-applicateur";
const PAGE_URL = `${SITE_URL}/devenir-applicateur`;

// Metas historiques, conservées en fallback si WP est indisponible.
const FALLBACK_META = {
  title: "Devenir applicateur cool roof : rejoignez le réseau Covalba",
  description:
    "Entreprise d'étanchéité, d'isolation ou de peinture industrielle ? Devenez applicateur cool roof Covalba : revêtements durables, formation, matériel, accompagnement.",
  canonical: PAGE_URL,
};

// Recopie des FAQ affichées par la vue src/views/DevenirApplicateur.tsx.
// Utilisée uniquement en fallback : en rendu WP, le block faq émet le FAQPage JSON-LD.
const faqs = [
  {
    q: "Faut-il déjà être une entreprise du bâtiment ?",
    a: "Oui. Le réseau s’adresse aux entreprises spécialistes de l’étanchéité, de l’isolation ou de la peinture industrielle, créées depuis plus de 2 ans et à clientèle principalement B2B.",
  },
  {
    q: "Quelle formation est prévue ?",
    a: "Une formation technique de 2 jours, qui couvre la vente des revêtements et les protocoles de pose.",
  },
  {
    q: "Quel matériel faut-il ?",
    a: "Des pompes Airless configurées sur-mesure, que Covalba vend et entretient.",
  },
  {
    q: "Comment je me fournis ensuite ?",
    a: "Via l’espace partenaire applicateurs : vous commandez en ligne et vous êtes livré directement sur le chantier.",
  },
  {
    q: "Quel accompagnement sur les chantiers ?",
    a: "Les experts Covalba sont à votre écoute pour la réussite de vos chantiers, avec assistance chantier et préconisation produit.",
  },
];

const fallbackJsonLd = [
  {
    "@context": "https://schema.org",
    "@type": "WebPage",
    name: "Devenir applicateur cool roof Covalba",
    url: PAGE_URL,
    description:
      "Page de recrutement du réseau d'applicateurs cool roof Covalba pour les entreprises du bâtiment à clientèle B2B.",
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    mainEntity: faqs.map((faq) => ({
      "@type": "Question",
      name: faq.q,
      acceptedAnswer: {
        "@type": "Answer",
        text: faq.a,
      },
    })),
  },
];

async function fetchPage(): Promise<WpPage | null> {
  try {
    const page = await getWpPage(WP_URI);
    if (!page) console.warn(`[wp] page ${WP_URI} introuvable, fallback vue codée.`);
    return page;
  } catch (error) {
    console.error(`[wp] page ${WP_URI} indisponible, fallback vue codée :`, error);
    return null;
  }
}

export async function generateMetadata(): Promise<Metadata> {
  const page = await fetchPage();
  if (!page) return buildMetadata(FALLBACK_META);
  return wpSeoToMetadata(page.seo, FALLBACK_META);
}

export default async function Page() {
  const page = await fetchPage();

  if (!page) {
    return (
      <>
        <JsonLd id="devenir-applicateur-jsonld" data={fallbackJsonLd} />
        <DevenirApplicateurView sections={null} />
      </>
    );
  }

  // FAQPage JSON-LD reconstruit depuis le block faq WP (auparavant émis par
  // le block faq du BlockRenderer) : la vue originale n'en émet pas.
  const sections = page.sections?.sections ?? null;
  const wpFaqJsonLd = faqPageJsonLd(sections);

  return (
    <>
      {wpFaqJsonLd && (
        <JsonLd id="devenir-applicateur-faq-jsonld" data={wpFaqJsonLd} />
      )}
      <JsonLd
        id="devenir-applicateur-breadcrumb-jsonld"
        data={breadcrumbJsonLd([
          { name: "Accueil", url: `${SITE_URL}/` },
          { name: "Devenir applicateur", url: PAGE_URL },
        ])}
      />
      <DevenirApplicateurView sections={sections} />
    </>
  );
}
