import MembershipExplorer, { type MembershipFacility } from "./MembershipExplorer";
import { fetchPublicFacilities } from "@/app/publicFacilities";
import { resolveSitePageSeo } from "@/app/pageSeo";
import {
  createBreadcrumbJsonLd,
  createCollectionPageJsonLd,
  createPageMetadata,
} from "@/app/seo";

export const revalidate = 1800;
export const dynamic = "force-dynamic";

const fallbackPageTitle =
  "Billig golfmedlemskap? Finn og sammenlign priser på alle klubber | TeeOff.no";
const fallbackPageDescription =
  "Hvor er det billigst å være medlem? Sammenlign priser på golfmedlemskap med full spillerett eller rimelige nasjonale alternativ (fjernmedlemskap) i Norge på TeeOff.no.";

export async function generateMetadata() {
  const seo = await resolveSitePageSeo("medlemskap", fallbackPageTitle, fallbackPageDescription);
  return createPageMetadata({
    title: seo.title,
    description: seo.description,
    path: "/medlemskap",
  });
}

export default async function MembershipPage() {
  const seo = await resolveSitePageSeo("medlemskap", fallbackPageTitle, fallbackPageDescription);
  const facilities = await fetchPublicFacilities<MembershipFacility>("membership", revalidate);

  const visibleFacilities = facilities.filter(
    (facility) =>
      typeof facility.standard_medlemskap === "number" ||
      typeof facility.rimeligste_alternativ === "number",
  );
  const collectionJsonLd = createCollectionPageJsonLd({
    name: seo.title,
    description: seo.description,
    path: "/medlemskap",
  });
  const breadcrumbJsonLd = createBreadcrumbJsonLd([
    { name: "Hjem", path: "/" },
    { name: "Medlemskap", path: "/medlemskap" },
  ]);

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(collectionJsonLd) }}
      />
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(breadcrumbJsonLd) }}
      />
      <main className="site-shell min-h-screen">
        <section className="border-b border-[#112015]/8 bg-[linear-gradient(135deg,rgba(139,195,74,0.16),rgba(255,255,255,0.92))]">
          <div className="mx-auto max-w-[1400px] px-4 py-14 sm:px-6 lg:px-8 lg:py-20">
            <p className="mb-4 text-[11px] font-black uppercase tracking-[0.28em] text-[#8BC34A]">
              Medlemskap
            </p>
            <h1 className="text-5xl font-black text-[#112015] sm:text-6xl">
              Sammenlign priser på golfmedlemskap i Norge
            </h1>
            <div className="mt-6 max-w-4xl space-y-5 text-base leading-7 text-[#4F5F50] sm:text-lg">
              <p>Beløpene oppdateres fortløpende, så snart jeg oppdager endringer.</p>
              <p>Jeg har stilt meg selv to spørsmål:</p>
              <p>
                <strong>Standardmedlemskap:</strong> Hva vil det koste meg, en
                gjennomsnittsgolfer i alder og kjønn, å spille så mye jeg ønsker på denne banen?
              </p>
              <p>
                <strong>Billigst mulig:</strong> Hva vil det koste meg å være medlem her, dersom
                jeg aksepterer at jeg må betale greenfee hver runde? (Medlemskapet skal også gi
                rett til greenfeespill på andre baner.) Dette er ofte kjent som fjernmedlemskap.
              </p>
              <p>Svarene på disse to spørsmålene er utgangspunktet for listene under.</p>
              <p>
                Det du naturligvis ikke klarer å lese ut av listene, er hva du får utover
                spilleretten, hvilke spesialtilbud som gjelder, om det er dyrere dersom du velger å
                dele årsavgiften opp i flere avdrag og andre ymse ting. Derfor er det også en lenke
                til klubbens innmeldingssider, slik at du kan lese deg opp på detaljene.
              </p>
              <p>
                Bruk listene for hva de er verdt, men husk: Har du anledning, så støtt nærklubben
                din. Det koster mye penger å tilby en allright golfbane!
              </p>
              <p>
                (Alt er oppgitt i norske kroner pr år, og jeg tar intet ansvar for eventuelle feil
                i listene.)
              </p>
              <p>
                Og la deg ikke forvirre av terminologien her. Ser du f.eks at det står
                &quot;greenfee&quot;, så er det i denne sammenhengen bare navnet på en type
                medlemskap klubben tilbyr.
              </p>
            </div>
          </div>
        </section>

        <section className="mx-auto max-w-[1400px] px-4 py-8 sm:px-6 lg:px-8 lg:py-10">
          <MembershipExplorer facilities={visibleFacilities} />
        </section>
      </main>
    </>
  );
}
