<?php

declare(strict_types=1);

/**
 * JSON-LD als ein @graph. Der SportsClub-Knoten (aus data/club.json) ist auf jeder
 * Seite identisch (NAP-Konsistenz für SEO/GEO) und hat eine feste @id, auf die
 * seitenspezifische Knoten verweisen.
 * Props:
 *   $extra array — zusätzliche Graph-Knoten der Seite (z. B. SportsTeam, FAQPage,
 *                  BreadcrumbList), gebaut via team_schema()/page_schema().
 */
$club = json_load('club');
$clubId = abs_url() . '#club';

$clubNode = [
    '@type'         => 'SportsClub',
    '@id'           => $clubId,
    'name'          => $club['name'],
    'alternateName' => $club['legal_name'],
    'foundingDate'  => $club['founded'],
    'description'   => $club['description'],
    'sport'         => $club['departments'],
    'email'         => $club['email'],
    'url'           => abs_url(),
    'logo'          => rtrim((string) config('base_url'), '/') . '/assets/img/logo.svg',
    'address'       => [
        '@type'           => 'PostalAddress',
        'streetAddress'   => $club['address']['street'],
        'postalCode'      => $club['address']['zip'],
        'addressLocality' => $club['address']['city'],
        'addressCountry'  => $club['address']['country'],
    ],
    'sameAs'        => array_values(array_filter($club['social'])),
    'geo'           => [
        '@type'     => 'GeoCoordinates',
        'latitude'  => $club['geo']['lat'],
        'longitude' => $club['geo']['lng'],
    ],
    'areaServed'    => [
        ['@type' => 'City',  'name' => $club['address']['city']],
        ['@type' => 'AdministrativeArea', 'name' => 'Landkreis ' . $club['address']['city']],
    ],
];

$graph = [
    '@context' => 'https://schema.org',
    '@graph'   => array_merge([$clubNode], $extra ?? []),
];
?>
    <script type="application/ld+json"><?= json_encode($graph, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) ?></script>
