<?php
/**
 * Script de test pour vérifier les départements d'un secteur
 */

require_once __DIR__ . '/src/Config/AppConfig.php';
require_once __DIR__ . '/src/Core/Database.php';
require_once __DIR__ . '/src/Services/DepartmentBoundaryService.php';

echo "Test de détection des départements pour un secteur\n";
echo "=================================================\n\n";

try {
    $appConfig = AppConfig::getInstance();
    Database::init($appConfig->getDatabaseConfig());
    $db = Database::getInstance();
    
    $boundaryService = new DepartmentBoundaryService();
    
    // Exemple 1 : Secteur entièrement dans les Côtes-d'Armor (22)
    echo "1. Test d'un secteur dans le 22 (Saint-Brieuc):\n";
    $sector1 = [
        [48.5144, -2.7597],  // Saint-Brieuc
        [48.5044, -2.7397],
        [48.4944, -2.7597],
        [48.5044, -2.7797],
        [48.5144, -2.7597]   // Fermer le polygone
    ];
    
    $result1 = $boundaryService->checkSectorInDepartment($sector1, '22');
    echo "   - Est contenu : " . ($result1['is_contained'] ? 'OUI' : 'NON') . "\n";
    echo "   - Message : " . $result1['message'] . "\n";
    echo "   - Départements touchés :\n";
    foreach ($result1['intersecting_departments'] as $dept) {
        echo "     * {$dept['nom_dept']} ({$dept['code_dept']}) : " . 
             number_format($dept['percentage_overlap'] ?? 100, 1) . "%\n";
    }
    
    // Exemple 2 : Secteur à cheval sur 22 et 29
    echo "\n2. Test d'un secteur à cheval 22/29 (Morlaix):\n";
    $sector2 = [
        [48.5778, -3.8280],  // Morlaix (29)
        [48.5778, -3.7280],  // Vers l'est (22)
        [48.4778, -3.7280],
        [48.4778, -3.8280],
        [48.5778, -3.8280]
    ];
    
    // Vérifier par rapport au département 22
    $result2 = $boundaryService->checkSectorInDepartment($sector2, '22');
    echo "   - Est contenu dans le 22 : " . ($result2['is_contained'] ? 'OUI' : 'NON') . "\n";
    echo "   - Message : " . $result2['message'] . "\n";
    
    // Obtenir tous les départements touchés
    echo "\n   - Analyse complète du secteur :\n";
    $allDepts = $boundaryService->getDepartmentsForSector($sector2);
    foreach ($allDepts as $dept) {
        echo "     * {$dept['nom_dept']} ({$dept['code_dept']}) : " . 
             number_format($dept['percentage_overlap'], 1) . "%\n";
    }
    
    // Exemple 3 : Secteur sur 3 départements
    echo "\n3. Test d'un grand secteur (22/29/56):\n";
    $sector3 = [
        [48.2000, -3.5000],  // Centre Bretagne
        [48.2000, -2.5000],
        [47.8000, -2.5000],
        [47.8000, -3.5000],
        [48.2000, -3.5000]
    ];
    
    $allDepts3 = $boundaryService->getDepartmentsForSector($sector3);
    echo "   - Départements touchés :\n";
    foreach ($allDepts3 as $dept) {
        echo "     * {$dept['nom_dept']} ({$dept['code_dept']}) : " . 
             number_format($dept['percentage_overlap'], 1) . "%\n";
    }
    
    // Calculer les adresses potentielles
    echo "\n   - Si on récupérait les adresses, il faudrait interroger :\n";
    foreach ($allDepts3 as $dept) {
        echo "     * Table cp{$dept['code_dept']} pour {$dept['nom_dept']}\n";
    }
    
} catch (Exception $e) {
    echo "✗ Erreur : " . $e->getMessage() . "\n";
}

echo "\n";