import Link from "next/link";
import Icon from "@/components/Icon";
import { getStripe } from "@/lib/stripe";

export const metadata = {
  title: "Demande envoyée",
  robots: { index: false, follow: false },
};

export default async function MerciPage({
  searchParams,
}: {
  searchParams: Promise<{
    dossier?: string;
    session_id?: string;
    canceled?: string;
  }>;
}) {
  const { dossier, session_id, canceled } = await searchParams;

  // Cas 1 : retour Stripe avec session_id → on essaie de récupérer le statut
  // pour adapter le message. Sinon fallback sur le texte virement.
  let stripeStatus: "paid" | "pending" | "unknown" | null = null;
  if (session_id && session_id !== "{CHECKOUT_SESSION_ID}") {
    const stripe = getStripe();
    if (stripe) {
      try {
        const session = await stripe.checkout.sessions.retrieve(session_id);
        if (session.payment_status === "paid") stripeStatus = "paid";
        else if (
          session.payment_status === "unpaid" &&
          session.status === "open"
        )
          stripeStatus = "pending";
        else stripeStatus = "unknown";
      } catch (err) {
        console.error("[merci] retrieve session failed:", err);
        stripeStatus = "unknown";
      }
    }
  }

  const isCanceled = canceled === "1";

  return (
    <section className="py-24 md:py-32">
      <div className="container-page">
        <div className="max-w-2xl mx-auto text-center space-y-8">
          {isCanceled ? (
            <>
              <Icon
                name="info"
                className="!text-6xl text-on-surface-variant"
              />
              <h1 className="display-lg !text-3xl md:!text-4xl text-primary">
                Paiement non finalisé.
              </h1>
              {dossier && (
                <p className="font-mono text-sm text-on-surface-variant">
                  Référence : {dossier}
                </p>
              )}
              <p className="body-lg text-on-surface-variant">
                Votre dossier a bien été enregistré, mais l'acompte n'a pas
                encore été réglé. Nous vous recontacterons pour finaliser le
                paiement, ou utilisez le lien envoyé par email.
              </p>
            </>
          ) : stripeStatus === "paid" ? (
            <>
              <Icon
                name="task_alt"
                className="!text-6xl text-secondary"
                filled
              />
              <h1 className="display-lg !text-3xl md:!text-4xl text-primary">
                Paiement reçu, dossier ouvert.
              </h1>
              {dossier && (
                <p className="font-mono text-sm text-on-surface-variant">
                  Référence : {dossier}
                </p>
              )}
              <p className="body-lg text-on-surface-variant">
                Merci, votre acompte a bien été reçu. Nous vous adressons par
                email votre facture acquittée. Le traitement de votre dossier
                démarre immédiatement.
              </p>
              <p className="body-md text-on-surface-variant">
                Suivez votre dossier depuis votre{" "}
                <Link
                  href="/espace-client"
                  className="underline hover:text-primary"
                >
                  espace client
                </Link>
                .
              </p>
            </>
          ) : (
            <>
              <Icon
                name="task_alt"
                className="!text-6xl text-secondary"
                filled
              />
              <h1 className="display-lg !text-3xl md:!text-4xl text-primary">
                Demande envoyée.
              </h1>
              {dossier && (
                <p className="font-mono text-sm text-on-surface-variant">
                  Référence : {dossier}
                </p>
              )}
              <p className="body-lg text-on-surface-variant">
                Vous allez recevoir un email avec votre facture et les
                instructions de paiement. Le traitement de votre dossier
                démarre dès réception du règlement.
              </p>
            </>
          )}
          <p className="body-md text-on-surface-variant">
            Une question ?{" "}
            <a
              href="mailto:contact@socialex.pro"
              className="underline hover:text-primary transition-colors"
            >
              contact@socialex.pro
            </a>
          </p>
          <div className="pt-4 flex flex-wrap items-center justify-center gap-4">
            <Link href="/" className="btn btn-primary">
              Retour à l'accueil
            </Link>
            {stripeStatus === "paid" && (
              <Link href="/espace-client" className="btn btn-secondary">
                Mon espace client
              </Link>
            )}
          </div>
        </div>
      </div>
    </section>
  );
}
