<?php
// ============================================
// SEN RDV SANTÉ+ — Envoyer OTP par SMS
// POST /api/auth/otp_envoyer.php
// Body: { "telephone": "771234567" }
// ============================================
require_once '../config/helpers.php';
require_once '../config/database.php';
require_once '../config/sms.php';

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

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

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

// je vérifie que le compte existe
$stmt = $db->prepare("SELECT id FROM utilisateurs WHERE telephone = ? AND actif = 1");
$stmt->execute([$telephone]);
if (!$stmt->fetch()) {
    repondre(['erreur' => 'Aucun compte trouvé avec ce numéro'], 404);
}

// j'invalide les anciens OTP de ce numéro
$db->prepare("UPDATE otp_codes SET utilise = 1 WHERE telephone = ? AND utilise = 0")
   ->execute([$telephone]);

// je génère un code OTP à 6 chiffres
$code     = str_pad(random_int(0, 999999), 6, '0', STR_PAD_LEFT);
$expireAt = date('Y-m-d H:i:s', strtotime('+10 minutes'));

// je stocke l'OTP en base
$db->prepare("
    INSERT INTO otp_codes (telephone, code, expire_at)
    VALUES (?, ?, ?)
")->execute([$telephone, $code, $expireAt]);

// j'envoie le SMS
$message = "SEN RDV SANTÉ+ : Votre code de réinitialisation est $code. Valable 10 minutes. Ne le partagez avec personne.";
$envoye  = envoyerSMS($telephone, $message);

if (!$envoye) {
    repondre(['erreur' => 'Impossible d\'envoyer le SMS. Vérifiez votre numéro.'], 500);
}

repondre([
    'succes'  => true,
    'message' => 'Code OTP envoyé par SMS',
]);