feat: Gestion des secteurs et migration v3.0.4+304
- Ajout système complet de gestion des secteurs avec contours géographiques - Import des contours départementaux depuis GeoJSON - API REST pour la gestion des secteurs (/api/sectors) - Service de géolocalisation pour déterminer les secteurs - Migration base de données avec tables x_departements_contours et sectors_adresses - Interface Flutter pour visualisation et gestion des secteurs - Ajout thème sombre dans l'application - Corrections diverses et optimisations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
110
api/test_addresses_dept.php
Normal file
110
api/test_addresses_dept.php
Normal file
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
/**
|
||||
* Script de test de la connexion à la base de données des adresses
|
||||
* Adapté pour la structure par département
|
||||
*/
|
||||
|
||||
require_once __DIR__ . '/src/Config/AppConfig.php';
|
||||
require_once __DIR__ . '/src/Core/Database.php';
|
||||
require_once __DIR__ . '/src/Core/AddressesDatabase.php';
|
||||
|
||||
echo "Test de connexion à la base de données des adresses par département\n";
|
||||
echo "==================================================================\n\n";
|
||||
|
||||
try {
|
||||
// Initialiser la configuration
|
||||
$appConfig = AppConfig::getInstance();
|
||||
$addressesConfig = $appConfig->getAddressesDatabaseConfig();
|
||||
|
||||
echo "Configuration:\n";
|
||||
echo "- Environnement: " . $appConfig->getEnvironment() . "\n";
|
||||
echo "- Host: " . $addressesConfig['host'] . "\n";
|
||||
echo "- Database: " . $addressesConfig['name'] . "\n";
|
||||
echo "- Username: " . $addressesConfig['username'] . "\n\n";
|
||||
|
||||
// Initialiser les connexions
|
||||
Database::init($appConfig->getDatabaseConfig());
|
||||
AddressesDatabase::init($addressesConfig);
|
||||
|
||||
$mainDb = Database::getInstance();
|
||||
$addressesDb = AddressesDatabase::getInstance();
|
||||
|
||||
echo "✓ Connexion réussie aux deux bases!\n\n";
|
||||
|
||||
// Lister les tables cp* disponibles
|
||||
echo "Tables d'adresses disponibles:\n";
|
||||
$stmt = $addressesDb->query("SHOW TABLES LIKE 'cp%'");
|
||||
$tables = $stmt->fetchAll(PDO::FETCH_COLUMN);
|
||||
|
||||
foreach ($tables as $table) {
|
||||
// Extraire le numéro de département
|
||||
$dept = str_replace('cp', '', $table);
|
||||
|
||||
// Compter les lignes
|
||||
$countStmt = $addressesDb->query("SELECT COUNT(*) as total FROM `$table`");
|
||||
$count = $countStmt->fetch()['total'];
|
||||
|
||||
echo "- $table (département $dept): " . number_format($count) . " adresses\n";
|
||||
}
|
||||
|
||||
echo "\n";
|
||||
|
||||
// Tester avec une entité
|
||||
echo "Test de récupération du département d'une entité:\n";
|
||||
$testEntityId = 1; // Changez selon votre base
|
||||
|
||||
$stmt = $mainDb->prepare("SELECT id, nom, departement FROM entites WHERE id = :id");
|
||||
$stmt->execute(['id' => $testEntityId]);
|
||||
$entity = $stmt->fetch();
|
||||
|
||||
if ($entity) {
|
||||
echo "- Entité #{$entity['id']}: {$entity['nom']} (département {$entity['departement']})\n";
|
||||
$tableName = "cp" . $entity['departement'];
|
||||
|
||||
// Vérifier si la table existe
|
||||
if (in_array($tableName, $tables)) {
|
||||
echo "✓ Table $tableName existe\n";
|
||||
|
||||
// Tester une requête sur cette table
|
||||
$stmt = $addressesDb->query("SELECT numero, rue, cp, ville, gps_lat, gps_lng
|
||||
FROM `$tableName`
|
||||
WHERE gps_lat != '' AND gps_lng != ''
|
||||
LIMIT 3");
|
||||
$addresses = $stmt->fetchAll();
|
||||
|
||||
echo "\nExemples d'adresses dans le département {$entity['departement']}:\n";
|
||||
foreach ($addresses as $addr) {
|
||||
echo "- {$addr['numero']} {$addr['rue']}, {$addr['cp']} {$addr['ville']} ";
|
||||
echo "(lat: {$addr['gps_lat']}, lng: {$addr['gps_lng']})\n";
|
||||
}
|
||||
|
||||
// Tester une requête géospatiale
|
||||
echo "\nTest de requête géospatiale:\n";
|
||||
$testLat = $addresses[0]['gps_lat'] ?? 48.8566;
|
||||
$testLng = $addresses[0]['gps_lng'] ?? 2.3522;
|
||||
|
||||
$sql = "SELECT COUNT(*) as total
|
||||
FROM `$tableName`
|
||||
WHERE ST_Distance_Sphere(
|
||||
POINT(CAST(gps_lng AS DECIMAL(10,8)), CAST(gps_lat AS DECIMAL(10,8))),
|
||||
POINT(:lng, :lat)
|
||||
) <= 1000
|
||||
AND gps_lat != '' AND gps_lng != ''";
|
||||
|
||||
$stmt = $addressesDb->prepare($sql);
|
||||
$stmt->execute(['lat' => $testLat, 'lng' => $testLng]);
|
||||
$result = $stmt->fetch();
|
||||
|
||||
echo "✓ Adresses dans un rayon de 1km autour de ($testLat, $testLng): " . $result['total'] . "\n";
|
||||
|
||||
} else {
|
||||
echo "✗ Table $tableName n'existe pas dans la base adresses\n";
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Exception $e) {
|
||||
echo "✗ Erreur: " . $e->getMessage() . "\n";
|
||||
echo "Trace:\n" . $e->getTraceAsString() . "\n";
|
||||
}
|
||||
|
||||
echo "\n";
|
||||
Reference in New Issue
Block a user