<?php
// ─────────────────────────────────────────────────────────────────
//  KAP DSI – Invitation client (génération token + envoi email)
// ─────────────────────────────────────────────────────────────────

require_once __DIR__ . '/kap-config.php';

header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Content-Type');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(204); exit; }
if ($_SERVER['REQUEST_METHOD'] !== 'POST') { http_response_code(405); echo json_encode(['ok'=>false,'error'=>'Méthode non autorisée']); exit; }

$body  = json_decode(file_get_contents('php://input'), true);
$email = filter_var(trim($body['email'] ?? ''), FILTER_VALIDATE_EMAIL);
$prenom = htmlspecialchars(strip_tags(trim($body['prenom'] ?? '')));
$nom    = htmlspecialchars(strip_tags(trim($body['nom'] ?? '')));
$site   = rtrim($body['siteUrl'] ?? KAP_SITE_URL, '/');

if (!$email || !$prenom) {
    http_response_code(400);
    echo json_encode(['ok'=>false,'error'=>'Email ou prénom manquant']);
    exit;
}

// ── Génération du token ──────────────────────────────────────────
$token   = bin2hex(random_bytes(32));          // 64 chars hex
$expires = time() + 72 * 3600;                 // valable 72h
$file    = __DIR__ . '/kap-tokens.json';

$tokens = file_exists($file) ? json_decode(file_get_contents($file), true) : [];

// Nettoyage des tokens expirés
$tokens = array_filter($tokens, fn($t) => $t['expires'] > time());

// Ajout du nouveau token
$tokens[$token] = [
    'email'   => $email,
    'prenom'  => $prenom,
    'nom'     => $nom,
    'expires' => $expires,
    'used'    => false,
];

file_put_contents($file, json_encode($tokens, JSON_PRETTY_PRINT));

// ── Construction du lien ─────────────────────────────────────────
$link = $site . '/espace-client/?token=' . $token;

// ── Email HTML ───────────────────────────────────────────────────
$html = "
<div style='font-family:Arial,sans-serif;max-width:600px;margin:0 auto;'>
  <div style='background:#0F2044;padding:32px;border-radius:6px 6px 0 0;border-bottom:3px solid #e05314;'>
    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 246 70' style='height:36px;width:auto;'>
      <defs><style>.k1{fill:#fff;font-family:Arial,sans-serif;font-size:52px;font-weight:700}.k2{fill:#fff}.k3{fill:none;stroke:rgba(255,255,255,.7);stroke-width:2}.k4{fill:rgba(255,255,255,.35)}.k5{fill:rgba(255,255,255,.6);font-family:Arial,sans-serif;font-size:32px}.k6{fill:#e63946}</style></defs>
      <text class='k1' transform='translate(9.54 55)'>K</text>
      <path class='k2' d='M82.54,7l28,48h-9l-19-37-19,37h-9L82.54,7Z'/>
      <circle class='k3' cx='82.54' cy='41' r='12'/>
      <polygon class='k2' points='82.54 31 85.04 39 82.54 43 80.04 39 82.54 31'/>
      <polygon class='k6' points='82.54 31 85.04 39 82.54 36 82.54 31'/>
      <polygon class='k4' points='82.54 51 85.04 44 82.54 43 80.04 44 82.54 51'/>
      <circle class='k2' cx='82.54' cy='41' r='2'/>
      <text class='k1' transform='translate(120.54 55)'>P</text>
      <text class='k5' transform='translate(184.54 55)'>DSI</text>
    </svg>
  </div>
  <div style='background:#f5f6f8;padding:36px 32px;'>
    <p style='font-size:16px;font-weight:600;color:#0F2044;margin:0 0 8px;'>Bonjour {$prenom},</p>
    <p style='font-size:14px;color:#4B5563;line-height:1.7;margin:0 0 24px;'>
      Votre espace client <strong style='color:#0F2044;'>KAP DSI</strong> a été créé.<br>
      Cliquez sur le bouton ci-dessous pour choisir votre mot de passe et accéder à votre espace.
    </p>
    <div style='text-align:center;margin:32px 0;'>
      <a href='{$link}' style='background:#e05314;color:#fff;padding:14px 36px;text-decoration:none;border-radius:4px;font-size:14px;font-weight:700;letter-spacing:.5px;display:inline-block;'>
        Activer mon espace client
      </a>
    </div>
    <div style='background:#fff;border:1px solid #E4E7EC;border-radius:4px;padding:16px 20px;margin:24px 0;'>
      <p style='font-size:11px;color:#6B7280;text-transform:uppercase;letter-spacing:1px;margin:0 0 6px;'>Votre identifiant de connexion</p>
      <p style='font-size:15px;font-weight:700;color:#0F2044;margin:0;'>{$email}</p>
    </div>
    <p style='font-size:12px;color:#9CA3AF;line-height:1.6;margin:24px 0 0;'>
      Ce lien est valable <strong>72 heures</strong>. Après activation, il ne sera plus utilisable.<br>
      Si vous n'êtes pas à l'origine de cette demande, ignorez cet email.
    </p>
    <hr style='border:none;border-top:1px solid #E4E7EC;margin:24px 0;'>
    <p style='font-size:11px;color:#9CA3AF;text-align:center;margin:0;'>
      KAP DSI · DSI à temps partagé · <a href='https://kapdsi.fr' style='color:#e05314;text-decoration:none;'>kapdsi.fr</a>
    </p>
  </div>
</div>
";

// ── Appel Brevo ──────────────────────────────────────────────────
$payload = json_encode([
    'sender'      => ['name' => 'KAP DSI', 'email' => KAP_SENDER_EMAIL],
    'to'          => [['email' => $email, 'name' => "{$prenom} {$nom}"]],
    'subject'     => "Bienvenue sur votre espace client KAP DSI",
    'htmlContent' => $html,
]);

$ch = curl_init('https://api.brevo.com/v3/smtp/email');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $payload,
    CURLOPT_HTTPHEADER     => [
        'accept: application/json',
        'api-key: ' . KAP_BREVO_API_KEY,
        'content-type: application/json',
    ],
    CURLOPT_TIMEOUT => 15,
]);

$response  = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_err  = curl_error($ch);
curl_close($ch);

if ($curl_err) { http_response_code(500); echo json_encode(['ok'=>false,'error'=>'Erreur réseau : '.$curl_err]); exit; }

if ($http_code === 201) {
    echo json_encode(['ok'=>true,'message'=>"Invitation envoyée à {$email}"]);
} else {
    $b = json_decode($response, true);
    http_response_code(500);
    echo json_encode(['ok'=>false,'error'=>$b['message'] ?? 'Erreur Brevo '.$http_code]);
}
