<?php
// ============================================
// SEN RDV SANTÉ+ — Vérifier OTP
// POST /api/auth/otp_verifier.php
// Body: { "telephone": "771234567", "code": "123456" }
// ============================================
require_once '../config/helpers.php';
require_once '../config/database.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    repondre(['erreur' => 'Méthode non autorisée'], 405);
}

$body = getBody();
validerChamps($body, ['telephone', 'code']);

$telephone = trim($body['telephone']);
$code      = trim($body['code']);
$db        = getDB();

// je vérifie l'OTP — valide, non utilisé, non expiré
$stmt = $db->prepare("
    SELECT id FROM otp_codes
    WHERE telephone = ?
      AND code      = ?
      AND utilise   = 0
      AND expire_at > NOW()
    ORDER BY created_at DESC
    LIMIT 1
");
$stmt->execute([$telephone, $code]);
$otp = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$otp) {
    repondre(['erreur' => 'Code incorrect ou expiré'], 401);
}

// je marque l'OTP comme utilisé
$db->prepare("UPDATE otp_codes SET utilise = 1 WHERE id = ?")
   ->execute([$otp['id']]);

// je génère un token temporaire pour la réinitialisation (valable 15 min)
$tokenTemp = bin2hex(random_bytes(32));
$expireAt  = date('Y-m-d H:i:s', strtotime('+15 minutes'));

// je stocke le token temp dans otp_codes pour validation finale
$db->prepare("
    INSERT INTO otp_codes (telephone, code, expire_at, utilise)
    VALUES (?, ?, ?, 0)
")->execute([$telephone, $tokenTemp, $expireAt]);

repondre([
    'succes'     => true,
    'message'    => 'Code vérifié',
    'token_temp' => $tokenTemp,
]);