<?php
// ─────────────────────────────────────────────
// api/release-client.php
//
// Wird vom HQ-Freigabe-Button gerufen:
// 1. Generiert Magic-Token (64 Hex-Zeichen, 30 Tage gültig)
// 2. Schreibt in customer_tokens
// 3. Setzt clients.status = 'released'
// 4. Setzt kurzbiographien.status = 'freigegeben'
// 5. Schickt Magic-Link-Mail an den Kunden
//
// POST {client_id: int}
// ─────────────────────────────────────────────

require_once __DIR__ . '/../includes/config.php';
require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/kurzbio.php';
require_once __DIR__ . '/../includes/mailer.php';

c2c_cors_headers();
require_api_token();

$body = json_decode(file_get_contents('php://input'), true) ?: [];
$clientId = (int)($body['client_id'] ?? $_GET['client_id'] ?? 0);

if (!$clientId) {
    json_response(['error' => 'client_id fehlt'], 422);
}

$db = C2CDatabase::get();

// 1. Klient holen
$client = C2CDatabase::getClient($clientId);
if (!$client) {
    json_response(['error' => 'Klient nicht gefunden'], 404);
}

// 2. Aktuelle Kurzbio prüfen
$bio = C2CKurzbio::getCurrent($clientId);
if (!$bio || $bio['status'] === 'discarded') {
    json_response(['error' => 'Keine Kurzbio vorhanden — bitte erst generieren'], 400);
}
if (empty($bio['inhalt'])) {
    json_response(['error' => 'Kurzbio-Text ist leer'], 400);
}

try {
    // 3. Token generieren (64 hex = 256 bit, 30 Tage gültig)
    $token   = bin2hex(random_bytes(32));
    $expires = date('Y-m-d H:i:s', strtotime('+30 days'));

    $db->prepare("
        INSERT INTO customer_tokens (client_id, token, expires_at)
        VALUES (?, ?, ?)
    ")->execute([$clientId, $token, $expires]);

    // 4. Status updaten
    $db->prepare("UPDATE clients SET status='released' WHERE id=?")->execute([$clientId]);
    $db->prepare("UPDATE kurzbiographien SET status='freigegeben' WHERE id=?")->execute([$bio['id']]);

    // 5. Magic-Link bauen
    // C2C_PUBLIC_URL = https://come2canada.life/c2c/  → wir wollen aber view.php
    // auf christianwehrli.ca/c2c/customer/view.php
    $magicLink = 'https://christianwehrli.ca/c2c/customer/view.php?token=' . $token;

    // 6. Mail senden
    $mail = c2c_send_mail(
        $client['email'],
        'Deine Vorschau ist bereit · come2canada.life',
        'mail_freigabe',
        [
            'vorname'    => $client['vorname'] ?? '',
            'nachname'   => $client['nachname'] ?? '',
            'magic_link' => $magicLink,
        ],
        trim(($client['vorname'] ?? '') . ' ' . ($client['nachname'] ?? '')),
        $clientId
    );

    if (!$mail['ok']) {
        // Token & Status sind bereits geschrieben — Mail-Fehler nicht rückgängig machen
        // Christian kann manuell mit dem Magic-Link weiterhelfen (Anzeige im HQ).
        json_response([
            'success' => false,
            'token'   => $token,
            'magic_link' => $magicLink,
            'error'   => 'Token erstellt, aber Mail-Versand fehlgeschlagen: ' . $mail['error'],
        ], 500);
    }

    // 7. Aktivität loggen
    if (function_exists('logAktivitaet')) {
        logAktivitaet('bio_freigegeben', $clientId,
            "Kurzbio v{$bio['version']} freigegeben, Mail an {$client['email']}");
    }

    json_response([
        'success'    => true,
        'token'      => $token,
        'magic_link' => $magicLink,
        'expires_at' => $expires,
        'mail_id'    => $mail['mail_id'],
    ]);

} catch (Throwable $e) {
    error_log("release-client: " . $e->getMessage());
    json_response(['error' => $e->getMessage()], 500);
}
