🚀 Début de la restauration des compteurs de congés"; try { $stmt = $meta_pdo->query("SELECT db_name, name FROM families WHERE is_active = 1"); $families = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($families as $family) { $dbName = $family['db_name']; echo "

Famille : {$family['name']} ($dbName)

"; try { $pdo = new PDO( "mysql:host=$db_host;dbname=$dbName;charset=utf8mb4", $db_user, $db_pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION] ); // 1. Création de la table de configuration (si elle n'existe pas) $pdo->exec(" CREATE TABLE IF NOT EXISTS pf_person_leave_meta ( id INT AUTO_INCREMENT PRIMARY KEY, person_id INT NOT NULL, leave_type VARCHAR(50) NOT NULL, anniversary_date DATE NOT NULL, UNIQUE KEY uq_person_leave (person_id, leave_type), FOREIGN KEY (person_id) REFERENCES pf_people(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; "); // 2. On scanne l'historique des soldes et snapshots pour trouver TOUS les types existants $stmtLeaves = $pdo->query(" SELECT DISTINCT person_id, leave_type FROM ( SELECT person_id, leave_type FROM pf_leave_balances UNION SELECT person_id, leave_type FROM pf_leave_snapshots ) as combined WHERE leave_type IS NOT NULL AND leave_type != '' "); $existingLeaves = $stmtLeaves->fetchAll(PDO::FETCH_ASSOC); $inserted = 0; $stmtInsert = $pdo->prepare(" INSERT IGNORE INTO pf_person_leave_meta (person_id, leave_type, anniversary_date) VALUES (?, ?, ?) "); // 3. On injecte les données dans la configuration avec les dates par défaut de ton ancien JS foreach ($existingLeaves as $leave) { $pid = $leave['person_id']; $type = strtoupper(trim($leave['leave_type'])); // Dates d'anniversaire par défaut (année 2000 arbitraire, seul le mois/jour compte) $anniversary = '2000-01-01'; if ($type === 'CP') $anniversary = '2000-06-01'; // 1er Juin if ($type === 'JRA') $anniversary = '2000-01-01'; // 1er Janvier if ($type === 'JA') $anniversary = '2000-04-29'; // 29 Avril (issu de ton ancien JS) $stmtInsert->execute([$pid, $type, $anniversary]); if ($stmtInsert->rowCount() > 0) { $inserted++; } } echo "✅ $inserted compteurs historiques (CP, JRA, JA...) détectés et configurés avec succès pour la modale.
"; } catch (PDOException $e) { echo "❌ Erreur sur la base $dbName : " . $e->getMessage() . "
"; } } echo "

🎉 Restauration terminée avec succès !

"; } catch (Exception $e) { die("❌ Erreur fatale Meta DB : " . $e->getMessage()); } ?>