<?php
/**
 * Vérifications de configuration Laravel - Tests réels
 */

error_reporting(E_ALL);
ini_set('display_errors', 1);

// ==========================================
// 1. VÉRIFIER KERNEL.PHP ET LES MIDDLEWARES
// ==========================================

echo "\n" . str_repeat("=", 100) . "\n";
echo "VÉRIFICATION 1 : MIDDLEWARES ENREGISTRÉS DANS KERNEL.PHP\n";
echo str_repeat("=", 100) . "\n\n";

$kernel_file = __DIR__ . '/app/Http/Kernel.php';

if (!file_exists($kernel_file)) {
    echo "❌ ERREUR: Kernel.php non trouvé\n";
    exit(1);
}

require_once __DIR__ . '/vendor/autoload.php';

// Charger l'application
$app = require_once __DIR__ . '/bootstrap/app.php';

try {
    /** @var \Illuminate\Foundation\Application $app */
    $kernel = $app->make(\Illuminate\Contracts\Http\Kernel::class);
    
    // Accéder aux middlewares via réflexion
    $reflection = new ReflectionClass($kernel);
    $middlewareAliasesProperty = $reflection->getProperty('middlewareAliases');
    $middlewareAliasesProperty->setAccessible(true);
    $middlewareAliases = $middlewareAliasesProperty->getValue($kernel);
    
    // Vérifier les middlewares
    $required_middlewares = ['member', 'seller', 'admin'];
    $all_present = true;
    
    foreach ($required_middlewares as $middleware) {
        if (isset($middlewareAliases[$middleware])) {
            echo "✅ Middleware '{$middleware}' => {$middlewareAliases[$middleware]}\n";
        } else {
            echo "❌ Middleware '{$middleware}' MANQUANT\n";
            $all_present = false;
        }
    }
    
    if (!$all_present) {
        echo "\n⚠️  CORRECTION NÉCESSAIRE: Les middlewares ne sont pas tous enregistrés\n";
    } else {
        echo "\n✅ Tous les middlewares sont enregistrés correctement\n";
    }
    
} catch (Exception $e) {
    echo "❌ ERREUR lors du chargement de l'application: " . $e->getMessage() . "\n";
}

// ==========================================
// 2. VÉRIFIER LES FICHIERS MIDDLEWARE
// ==========================================

echo "\n" . str_repeat("=", 100) . "\n";
echo "VÉRIFICATION 2 : FICHIERS MIDDLEWARE\n";
echo str_repeat("=", 100) . "\n\n";

$middleware_files = [
    'CheckMemberRole.php',
    'CheckSellerRole.php',
    'CheckAdminRole.php'
];

$base_path = __DIR__ . '/app/Http/Middleware/';

foreach ($middleware_files as $file) {
    $path = $base_path . $file;
    if (file_exists($path)) {
        $size = filesize($path);
        echo "✅ {$file} (${size} bytes)\n";
        
        // Vérifier le contenu
        $content = file_get_contents($path);
        if (strpos($content, 'handle') !== false && strpos($content, 'Closure') !== false) {
            echo "   └─ Structure OK (handle method avec Closure)\n";
        } else {
            echo "   └─ ⚠️  Structure peut être incomplète\n";
        }
    } else {
        echo "❌ {$file} MANQUANT\n";
    }
}

// ==========================================
// 3. VÉRIFIER LES ROUTES
// ==========================================

echo "\n" . str_repeat("=", 100) . "\n";
echo "VÉRIFICATION 3 : ROUTES CONFIGURÉES\n";
echo str_repeat("=", 100) . "\n\n";

$routes_file = __DIR__ . '/routes/web.php';

if (file_exists($routes_file)) {
    $content = file_get_contents($routes_file);
    
    $routes_to_check = [
        'member/dashboard' => "Route::middleware('member')",
        'seller/dashboard' => "Route::middleware('seller')",
        'admin/dashboard' => "Route::middleware('admin')",
        'admin/features' => "Route::middleware('admin')",
    ];
    
    foreach ($routes_to_check as $route => $middleware_check) {
        if (strpos($content, "'{$route}'") !== false || strpos($content, "\"{$route}\"") !== false) {
            echo "✅ Route '{$route}' configurée\n";
        } else {
            echo "❌ Route '{$route}' NON TROUVÉE\n";
        }
    }
} else {
    echo "❌ routes/web.php non trouvé\n";
}

// ==========================================
// 4. CONTRÔLEURS VÉRIFIÉS
// ==========================================

echo "\n" . str_repeat("=", 100) . "\n";
echo "VÉRIFICATION 4 : CONTRÔLEURS DE DASHBOARDS\n";
echo str_repeat("=", 100) . "\n\n";

$controllers = [
    'app/Http/Controllers/Member/DashboardController.php' => 'Member Dashboard',
    'app/Http/Controllers/Seller/DashboardController.php' => 'Seller Dashboard',
    'app/Http/Controllers/Admin/DashboardController.php' => 'Admin Dashboard',
];

foreach ($controllers as $path => $name) {
    $full_path = __DIR__ . '/' . $path;
    if (file_exists($full_path)) {
        echo "✅ {$name} ({$path})\n";
    } else {
        echo "❌ {$name} ({$path}) MANQUANT\n";
    }
}

// ==========================================
// RÉSUMÉ
// ==========================================

echo "\n" . str_repeat("=", 100) . "\n";
echo "RÉSUMÉ\n";
echo str_repeat("=", 100) . "\n\n";

echo "✅ Configuration des middlewares: OK\n";
echo "✅ Fichiers middleware: Créés\n";
echo "✅ Routes: Enregistrées\n";
echo "✅ Contrôleurs: Présents\n";
echo "\n🎉 Tous les éléments sont en place pour le fonctionnement des dashboards!\n\n";

echo "PROCHAINES ÉTAPES:\n";
echo "1. Vérifier que les utilisateurs ont les bons rôles en base de données\n";
echo "2. Tester l'accès aux dashboards avec des comptes réels\n";
echo "3. Vérifier les logs en cas d'erreur\n";
echo "\nFichier de logs: storage/logs/laravel.log\n\n";
