<?php
// ============================================
// SEN RDV SANTÉ+ — Inscription patient
// POST /api/auth/inscription.php
// Body: { "nom": "Diallo", "prenom": "Mamadou", "telephone": "771234567", "mot_de_passe": "1234" }
// ============================================

require_once '../config/database.php';
require_once '../config/helpers.php';

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

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

// Nettoyer le numéro de téléphone
$telephone = preg_replace('/\s+/', '', $body['telephone']);

$db = getDB();

// Vérifier si le numéro existe déjà
$stmt = $db->prepare("SELECT id FROM utilisateurs WHERE telephone = ?");
$stmt->execute([$telephone]);
if ($stmt->fetch()) {
    repondre(['erreur' => 'Ce numéro de téléphone est déjà utilisé'], 409);
}

// Créer le compte patient
$stmt = $db->prepare("
    INSERT INTO utilisateurs (nom, prenom, telephone, email, mot_de_passe, role)
    VALUES (?, ?, ?, ?, ?, 'patient')
");
$stmt->execute([
    trim($body['nom']),
    trim($body['prenom']),
    $telephone,
    $body['email'] ?? null,
    hash('sha256', $body['mot_de_passe'])
]);

$userId = $db->lastInsertId();

// Générer un token directement (connexion auto après inscription)
$token = genererToken();
$expireAt = date('Y-m-d H:i:s', strtotime('+30 days'));

$stmt = $db->prepare("INSERT INTO tokens_api (utilisateur_id, token, expire_at) VALUES (?, ?, ?)");
$stmt->execute([$userId, $token, $expireAt]);

repondre([
    'succes'  => true,
    'message' => 'Compte créé avec succès',
    'token'   => $token,
    'user'    => [
        'id'        => $userId,
        'nom'       => trim($body['nom']),
        'prenom'    => trim($body['prenom']),
        'telephone' => $telephone,
        'role'      => 'patient',
    ]
], 201);