Ajout du dossier api avec la géolocalisation automatique des casernes de pompiers

This commit is contained in:
d6soft
2025-05-16 21:03:04 +02:00
parent 69dcff42f8
commit f4f7882963
143 changed files with 24329 additions and 1 deletions

View File

@@ -0,0 +1,120 @@
<?php
/**
* Script de migration de la table x_devises de geosector vers geosector_app
*
* Ce script transfère les données de la table x_devises de geosector vers la nouvelle
* structure de la table x_devises dans geosector_app, en adaptant les noms de champs.
*/
require_once dirname(__DIR__) . '/config.php';
// Création du dossier de logs si nécessaire
if (!is_dir(dirname(__DIR__) . '/logs')) {
mkdir(dirname(__DIR__) . '/logs', 0755, true);
}
logOperation("Démarrage de la migration de la table x_devises");
try {
// Connexion aux bases de données
$sourceDb = getSourceConnection();
$targetDb = getTargetConnection();
// Récupération des devises de la source
$stmt = $sourceDb->query("SELECT * FROM x_devises");
$devises = $stmt->fetchAll();
logOperation("Nombre de devises à migrer: " . count($devises));
// Vérifier si la table existe dans la cible
try {
$targetDb->query("SELECT 1 FROM x_devises LIMIT 1");
$tableExists = true;
} catch (PDOException $e) {
$tableExists = false;
}
// Créer la table si elle n'existe pas
if (!$tableExists) {
logOperation("La table x_devises n'existe pas dans la base cible. Création de la table...");
$createTableSql = "CREATE TABLE `x_devises` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(10) NOT NULL,
`libelle` varchar(50) NOT NULL,
`symbole` varchar(10) DEFAULT NULL,
`chk_active` tinyint(1) UNSIGNED NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;";
$targetDb->exec($createTableSql);
logOperation("Table x_devises créée avec succès");
}
// Préparation de la requête d'insertion
$insertQuery = "INSERT INTO x_devises (
id,
code,
libelle,
symbole,
chk_active
) VALUES (
:id,
:code,
:libelle,
:symbole,
:chk_active
) ON DUPLICATE KEY UPDATE
code = VALUES(code),
libelle = VALUES(libelle),
symbole = VALUES(symbole),
chk_active = VALUES(chk_active)";
$insertStmt = $targetDb->prepare($insertQuery);
// Compteurs
$successCount = 0;
$errorCount = 0;
// Traitement de chaque devise
foreach ($devises as $devise) {
try {
// Mappage des champs entre les deux structures
$id = isset($devise['rowid']) ? $devise['rowid'] : $devise['id'];
$chkActive = isset($devise['active']) ? $devise['active'] :
(isset($devise['chk_active']) ? $devise['chk_active'] : 1);
// Préparation des données pour l'insertion
$deviseData = [
'id' => $id,
'code' => $devise['code'],
'libelle' => $devise['libelle'],
'symbole' => $devise['symbole'] ?? null,
'chk_active' => $chkActive
];
// Insertion dans la base cible
$insertStmt->execute($deviseData);
$successCount++;
logOperation("Devise ID {$id} ({$devise['code']}) migrée avec succès", "INFO");
} catch (Exception $e) {
$errorCount++;
logOperation("Erreur lors de la migration de la devise ID {$id} ({$devise['code']}): " . $e->getMessage(), "ERROR");
}
}
logOperation("Migration terminée. Succès: $successCount, Erreurs: $errorCount");
// Fermer le tunnel SSH
closeSshTunnel();
} catch (Exception $e) {
logOperation("Erreur critique: " . $e->getMessage(), "ERROR");
// Fermer le tunnel SSH en cas d'erreur
closeSshTunnel();
exit(1);
}