<br />
<b>Warning</b>:  Undefined variable $auth in <b>/home/pevo0181/public_html/pia-soft.com/cleania/routes/index.php</b> on line <b>542</b><br />
<br />
<b>Warning</b>:  Trying to access array offset on value of type null in <b>/home/pevo0181/public_html/pia-soft.com/cleania/routes/index.php</b> on line <b>542</b><br />
<?php
// ============================================================
//  POST /api/auth.php
//  Logique : cherche TOUS les enfants du numéro de téléphone
//  Si 1 enfant → mode single (connexion directe)
//  Si 2+ enfants → mode multi (écran de sélection)
//  Le matricule n'est utilisé que pour valider si 1 seul enfant trouvé
// ============================================================
require_once __DIR__ . '/config.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') jsonError('Méthode non autorisée', 405);

$body      = json_decode(file_get_contents('php://input'), true);
$telephone = trim($body['telephone'] ?? '');
$matricule = strtoupper(trim($body['matricule'] ?? ''));

if (!$telephone) jsonError('Numéro de téléphone requis');

// Normaliser : 9 derniers chiffres uniquement
$telephone = preg_replace('/[^0-9]/', '', $telephone);
$telephone = substr($telephone, -9);
if (strlen($telephone) < 8) jsonError('Numéro de téléphone invalide');

$db = getDB();

// --- Chercher TOUS les enfants liés à ce numéro (sans filtre matricule) ---
$stmt = $db->prepare("
    SELECT e.id, e.matricule, e.nom, e.prenom, e.date_naissance,
           e.sexe, e.photo, e.nom_parent, e.telephone_parent, e.telephone_parent2, e.statut
    FROM eleves e
    WHERE e.statut = 'actif'
      AND (
          RIGHT(REGEXP_REPLACE(e.telephone_parent,  '[^0-9]', ''), 9) = ?
          OR RIGHT(REGEXP_REPLACE(e.telephone_parent2, '[^0-9]', ''), 9) = ?
      )
    ORDER BY e.prenom ASC
");
$stmt->execute([$telephone, $telephone]);
$eleves = $stmt->fetchAll();

if (empty($eleves)) jsonError('Aucun enfant trouvé pour ce numéro de téléphone', 401);

// Si matricule fourni ET ne correspond à aucun enfant de ce parent → erreur
if ($matricule) {
    $matricules = array_column($eleves, 'matricule');
    if (!in_array($matricule, $matricules)) {
        jsonError('Matricule incorrect pour ce numéro de téléphone', 401);
    }
}

// Enrichir chaque enfant avec sa classe et année
$result = [];
foreach ($eleves as $eleve) {
    $stmt2 = $db->prepare("
        SELECT i.id as inscription_id, i.statut as statut_inscription,
               c.nom as classe_nom, c.cycle_nom,
               n.nom_fr as niveau_nom,
               a.libelle as annee_scolaire
        FROM inscriptions i
        JOIN classes c ON c.id = i.classe_id
        JOIN niveaux n ON n.id = c.niveau_id
        JOIN annees_scolaires a ON a.id = i.annee_id
        WHERE i.eleve_id = ?
        ORDER BY i.annee_id DESC
        LIMIT 1
    ");
    $stmt2->execute([$eleve['id']]);
    $inscription = $stmt2->fetch();

    $result[] = [
        'id'             => $eleve['id'],
        'matricule'      => $eleve['matricule'],
        'nom'            => $eleve['nom'],
        'prenom'         => $eleve['prenom'],
        'sexe'           => $eleve['sexe'],
        'photo'          => $eleve['photo'],
        'classe'         => $inscription['classe_nom']     ?? '—',
        'cycle'          => $inscription['cycle_nom']      ?? '—',
        'niveau'         => $inscription['niveau_nom']     ?? '—',
        'annee'          => $inscription['annee_scolaire'] ?? '—',
        'inscription_id' => $inscription['inscription_id'] ?? null,
    ];
}

$parent = [
    'nom'       => $eleves[0]['nom_parent'],
    'telephone' => $eleves[0]['telephone_parent'],
];

// --- Décision : single ou multi ---
if (count($result) === 1) {
    $enfant = $result[0];
    $token  = jwt_encode([
        'eleve_id'       => $enfant['id'],
        'matricule'      => $enfant['matricule'],
        'telephone'      => $telephone,
        'inscription_id' => $enfant['