<?php
declare(strict_types=1);

/**
 * GET /c2c/customer/rcic.php?token=...
 *
 * Magic-Link-Endpoint, der dem Kunden seine empfohlenen RCIC-Berater zeigt.
 *
 * Voraussetzung: Klient hat bezahlt (status = paid oder delivered).
 * Vor Bezahlung wird redirect auf view.php gemacht.
 *
 * Token-Validierung identisch zu view.php (gleiches customer_tokens-Schema).
 */

$config = require __DIR__ . '/../payments/_config.php';
require_once __DIR__ . '/../includes/rcic-matcher.php';

$token = (string)($_GET['token'] ?? '');

if (!preg_match('/^[a-f0-9]{64}$/', $token)) {
    http_response_code(400);
    renderError('Ungültiger Link', 'Der Link ist nicht korrekt aufgebaut.');
    exit;
}

$pdo = new PDO(
    "mysql:host={$config['db']['host']};dbname={$config['db']['name']};charset=utf8mb4",
    $config['db']['user'],
    $config['db']['password'],
    [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]
);

// Token validieren
$stmt = $pdo->prepare(
    'SELECT ct.client_id, ct.expires_at, ct.revoked,
            c.uuid, c.vorname, c.nachname, c.status, c.service_type
     FROM customer_tokens ct
     INNER JOIN clients c ON c.id = ct.client_id
     WHERE ct.token = ? LIMIT 1'
);
$stmt->execute([$token]);
$row = $stmt->fetch();

if (!$row) {
    http_response_code(404);
    renderError('Link nicht gefunden', 'Dieser Link existiert nicht. Wende dich an chris@swisschris.ca, falls du Hilfe brauchst.');
    exit;
}

if ((int)$row['revoked'] === 1) {
    http_response_code(410);
    renderError('Link widerrufen', 'Dieser Link wurde widerrufen.');
    exit;
}

if (strtotime($row['expires_at']) < time()) {
    http_response_code(410);
    renderError('Link abgelaufen', 'Dieser Link ist abgelaufen. Wir können dir gerne einen neuen schicken — schreib an chris@swisschris.ca.');
    exit;
}

// Vor Bezahlung: kein Zugriff auf RCIC-Liste
if (!in_array($row['status'], ['paid', 'delivered'], true)) {
    http_response_code(303);
    header('Location: view.php?token=' . urlencode($token));
    exit;
}

$clientId   = (int)$row['client_id'];
$clientName = trim($row['vorname'] . ' ' . $row['nachname']);
$serviceType = (string)$row['service_type'];

// Zugriff loggen
$pdo->prepare('UPDATE customer_tokens SET last_accessed_at = NOW(), access_count = access_count + 1 WHERE token = ?')
    ->execute([$token]);

// Zugeordnete RCICs laden
$rcics = c2c_load_assigned_rcics($pdo, $clientId);

// Sprachen sind je nach Backend entweder ein JSON-Array oder Komma-getrennter String —
// wir normalisieren defensiv für die Anzeige.
function rcic_languages_array($raw): array {
    if (!is_string($raw) || $raw === '') return [];
    $decoded = json_decode($raw, true);
    if (is_array($decoded)) return array_map('strval', $decoded);
    return array_map('trim', preg_split('/[,;]+/', $raw));
}

function rcic_specialties_array($raw): array {
    return rcic_languages_array($raw); // gleiche Logik
}

?><!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Deine RCIC-Empfehlungen · come2canada.life</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,600&family=Nunito:wght@400;600&display=swap" rel="stylesheet">
<style>
  :root {
    --c-bg: #fdfaf3;
    --c-text: #1a1a1a;
    --c-muted: #6a6a6a;
    --c-accent: #b13a2e;
    --c-card: #ffffff;
    --c-border: #e6e0d4;
    --c-soft: #f3ede0;
    --c-tag-bg: #efe7d6;
    --c-tag-text: #5c4a2e;
  }
  * { box-sizing: border-box; }
  body {
    font-family: 'Fraunces', Georgia, serif;
    background: var(--c-bg);
    color: var(--c-text);
    margin: 0;
    line-height: 1.65;
    font-size: 17px;
  }
  .wrap { max-width: 760px; margin: 0 auto; padding: 3rem 1.5rem 5rem; }
  h1 { font-size: 2.2rem; margin: 0 0 .25rem; font-weight: 600; }
  h2 { font-size: 1.4rem; margin: 2.5rem 0 1rem; font-weight: 600; }
  h3 { font-size: 1.2rem; margin: 0 0 .35rem; font-weight: 600; }
  .greeting { color: var(--c-muted); margin: 0 0 2.5rem; font-style: italic; }
  .intro {
    background: var(--c-soft);
    padding: 1.5rem 1.5rem;
    border-left: 3px solid var(--c-accent);
    margin: 2rem 0 2.5rem;
    font-size: 1rem;
  }
  .intro p { margin: 0 0 .75rem; }
  .intro p:last-child { margin-bottom: 0; }

  .rcic-list { display: flex; flex-direction: column; gap: 1.25rem; margin: 0 0 3rem; }
  .rcic {
    background: var(--c-card);
    border: 1px solid var(--c-border);
    border-radius: 8px;
    padding: 1.5rem 1.5rem 1.25rem;
  }
  .rcic-head {
    display: flex; flex-wrap: wrap; align-items: baseline;
    gap: .5rem 1rem; margin-bottom: .25rem;
  }
  .rcic-firm {
    color: var(--c-muted); font-size: .95rem;
    font-family: 'Nunito', sans-serif;
  }
  .rcic-loc {
    color: var(--c-muted); font-size: .85rem;
    font-family: 'Nunito', sans-serif; margin-bottom: .85rem;
  }
  .rcic-loc .sep { margin: 0 .35rem; color: var(--c-border); }

  .tags { display: flex; flex-wrap: wrap; gap: .4rem; margin: .65rem 0; }
  .tag {
    background: var(--c-tag-bg);
    color: var(--c-tag-text);
    font-family: 'Nunito', sans-serif;
    font-size: .78rem;
    padding: .2rem .6rem;
    border-radius: 99px;
    letter-spacing: .02em;
  }
  .tag.spec { background: #f3e6e3; color: #6e2820; }

  .rcic-actions {
    display: flex; flex-wrap: wrap; gap: .5rem 1rem; margin-top: .9rem;
    font-family: 'Nunito', sans-serif; font-size: .92rem;
  }
  .rcic-actions a {
    color: var(--c-accent); text-decoration: none;
    border-bottom: 1px solid transparent; transition: border-color .15s;
  }
  .rcic-actions a:hover { border-bottom-color: var(--c-accent); }

  .match-reason {
    color: var(--c-muted); font-size: .8rem;
    font-family: 'Nunito', sans-serif;
    margin-top: .65rem; font-style: italic;
  }

  .empty {
    background: var(--c-soft);
    border-radius: 6px;
    padding: 1.5rem;
    color: var(--c-muted);
    margin: 2rem 0 3rem;
  }

  .footer {
    margin-top: 3rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--c-border);
    color: var(--c-muted);
    font-size: .85rem;
    font-family: 'Nunito', sans-serif;
  }
  .footer a { color: var(--c-muted); }
  .back {
    display: inline-block; margin-bottom: 1.5rem;
    color: var(--c-accent); text-decoration: none;
    font-family: 'Nunito', sans-serif; font-size: .9rem;
  }
  .back:hover { text-decoration: underline; }
</style>
</head>
<body>
<div class="wrap">

  <a href="view.php?token=<?= urlencode($token) ?>" class="back">← Zurück zu deiner Geschichte</a>

  <h1>Deine RCIC-Empfehlungen</h1>
  <p class="greeting">Liebe:r <?= htmlspecialchars($clientName) ?> — drei Wegweiser für den nächsten Schritt.</p>

  <div class="intro">
    <p>Ein RCIC ist ein lizenzierter Immigration Consultant, beim College of Immigration and Citizenship Consultants (CICC) registriert. Anders als ich darf ein RCIC dich rechtlich vertreten und Anträge bei IRCC einreichen.</p>
    <p>Diese Auswahl basiert auf deinem Profil — bevorzugt deutschsprachig, wenn möglich in deiner Wunschprovinz. Die Erstberatung ist bei den meisten kostenlos.</p>
  </div>

  <?php if (count($rcics) === 0): ?>

    <div class="empty">
      <p style="margin:0">
        Christian arbeitet noch an deiner Beraterauswahl. Du erhältst eine E-Mail,
        sobald die Empfehlungen bereit sind. Das dauert in der Regel 1–2 Werktage.
      </p>
    </div>

  <?php else: ?>

    <div class="rcic-list">
      <?php foreach ($rcics as $r): ?>
        <?php
          $langs = rcic_languages_array($r['languages'] ?? '');
          $specs = rcic_specialties_array($r['specialties'] ?? '');
        ?>
        <div class="rcic">
          <div class="rcic-head">
            <h3><?= htmlspecialchars($r['name']) ?></h3>
            <?php if (!empty($r['firm'])): ?>
              <span class="rcic-firm"><?= htmlspecialchars($r['firm']) ?></span>
            <?php endif; ?>
          </div>
          <div class="rcic-loc">
            <?php if (!empty($r['city'])): ?><?= htmlspecialchars($r['city']) ?><?php endif; ?>
            <?php if (!empty($r['city']) && !empty($r['province'])): ?><span class="sep">·</span><?php endif; ?>
            <?php if (!empty($r['province'])): ?><?= htmlspecialchars($r['province']) ?><?php endif; ?>
            <?php if (!empty($r['rcic_number'])): ?>
              <span class="sep">·</span>RCIC #<?= htmlspecialchars($r['rcic_number']) ?>
            <?php endif; ?>
          </div>

          <?php if (count($langs) > 0): ?>
            <div class="tags">
              <?php foreach ($langs as $lang): ?>
                <span class="tag"><?= htmlspecialchars($lang) ?></span>
              <?php endforeach; ?>
            </div>
          <?php endif; ?>

          <?php if (count($specs) > 0): ?>
            <div class="tags">
              <?php foreach ($specs as $spec): ?>
                <span class="tag spec"><?= htmlspecialchars($spec) ?></span>
              <?php endforeach; ?>
            </div>
          <?php endif; ?>

          <div class="rcic-actions">
            <?php if (!empty($r['email'])): ?>
              <a href="mailto:<?= htmlspecialchars($r['email']) ?>">✉️ <?= htmlspecialchars($r['email']) ?></a>
            <?php endif; ?>
            <?php if (!empty($r['website'])): ?>
              <a href="<?= htmlspecialchars($r['website']) ?>" target="_blank" rel="noopener">🌐 Website</a>
            <?php endif; ?>
          </div>

          <?php if (!empty($r['match_reason'])): ?>
            <div class="match-reason">
              Passt, weil: <?= htmlspecialchars($r['match_reason']) ?>
            </div>
          <?php endif; ?>
        </div>
      <?php endforeach; ?>
    </div>

  <?php endif; ?>

  <div class="footer">
    come2canada.life · Storytelling und Recherche, keine Rechtsberatung<br>
    RCIC-Vermittlung ist eine Empfehlung, keine Mandatierung. Beratungsverträge schliesst du direkt mit dem RCIC.<br>
    Fragen? <a href="mailto:chris@swisschris.ca">chris@swisschris.ca</a>
  </div>

</div>
</body>
</html>
<?php

// ---------------- Helpers ----------------

function renderError(string $title, string $message): void
{
    ?><!DOCTYPE html>
<html lang="de"><head><meta charset="utf-8">
<title><?= htmlspecialchars($title) ?></title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>body{font-family:Georgia,serif;max-width:560px;margin:4rem auto;padding:2rem;color:#1a1a1a;line-height:1.6}h1{color:#b13a2e}</style>
</head><body>
<h1><?= htmlspecialchars($title) ?></h1>
<p><?= htmlspecialchars($message) ?></p>
</body></html><?php
}
