<?php
/**
 * Script de diagnóstico para verificar la configuración del sistema
 * Sistema de Inventario Forestal de Guatemala V1.0
 */

echo "=== DIAGNÓSTICO DEL SISTEMA ===\n\n";

// 1. Verificar PHP
echo "1. VERIFICACIÓN DE PHP:\n";
echo "   Versión PHP: " . PHP_VERSION . "\n";
echo "   Extensiones requeridas:\n";

$required_extensions = ['pdo', 'pdo_mysql', 'json', 'mbstring'];
foreach ($required_extensions as $ext) {
    $status = extension_loaded($ext) ? "✅ OK" : "❌ FALTA";
    echo "   - $ext: $status\n";
}

// 2. Verificar archivos de configuración
echo "\n2. VERIFICACIÓN DE ARCHIVOS:\n";

$required_files = [
    'api/config/config.php' => 'Configuración principal',
    'api/config/database.php' => 'Configuración de base de datos',
    'api/index.php' => 'API principal',
    'database/schema.sql' => 'Esquema de base de datos'
];

foreach ($required_files as $file => $description) {
    $status = file_exists($file) ? "✅ OK" : "❌ FALTA";
    echo "   - $file ($description): $status\n";
}

// 3. Verificar conexión a base de datos
echo "\n3. VERIFICACIÓN DE BASE DE DATOS:\n";

try {
    require_once 'api/config/database.php';
    $database = new Database();
    $db = $database->getConnection();
    echo "   - Conexión a MySQL: ✅ OK\n";
    
    // Verificar si las tablas existen
    $tables = ['usuarios', 'proyectos', 'rodales', 'especies', 'datos_campo'];
    foreach ($tables as $table) {
        $stmt = $db->prepare("SHOW TABLES LIKE '$table'");
        $stmt->execute();
        $exists = $stmt->rowCount() > 0;
        $status = $exists ? "✅ OK" : "❌ FALTA";
        echo "   - Tabla $table: $status\n";
    }
    
    // Verificar si hay usuarios
    $stmt = $db->prepare("SELECT COUNT(*) as count FROM usuarios");
    $stmt->execute();
    $result = $stmt->fetch(PDO::FETCH_ASSOC);
    echo "   - Usuarios en sistema: " . $result['count'] . "\n";
    
} catch (Exception $e) {
    echo "   - Conexión a MySQL: ❌ ERROR - " . $e->getMessage() . "\n";
}

// 4. Verificar configuración del servidor web
echo "\n4. VERIFICACIÓN DEL SERVIDOR WEB:\n";

echo "   - Servidor: " . $_SERVER['SERVER_SOFTWARE'] . "\n";
echo "   - Document Root: " . $_SERVER['DOCUMENT_ROOT'] . "\n";
echo "   - Script actual: " . $_SERVER['SCRIPT_NAME'] . "\n";

// Verificar mod_rewrite
if (function_exists('apache_get_modules')) {
    $modules = apache_get_modules();
    $rewrite_enabled = in_array('mod_rewrite', $modules);
    $status = $rewrite_enabled ? "✅ OK" : "❌ DESHABILITADO";
    echo "   - mod_rewrite: $status\n";
} else {
    echo "   - mod_rewrite: ❓ No se puede verificar\n";
}

// 5. Probar API directamente
echo "\n5. PRUEBA DE API:\n";

// Simular una llamada a la API
$_SERVER['REQUEST_METHOD'] = 'GET';
$_SERVER['REQUEST_URI'] = '/api/';

ob_start();
try {
    include 'api/index.php';
    $api_response = ob_get_contents();
    echo "   - API responde: ✅ OK\n";
    echo "   - Respuesta: " . substr($api_response, 0, 100) . "...\n";
} catch (Exception $e) {
    echo "   - API responde: ❌ ERROR - " . $e->getMessage() . "\n";
}
ob_end_clean();

// 6. Instrucciones de configuración
echo "\n=== INSTRUCCIONES DE CONFIGURACIÓN ===\n\n";

echo "Para configurar el sistema correctamente:\n\n";

echo "1. CONFIGURAR BASE DE DATOS:\n";
echo "   - Crear base de datos MySQL llamada 'sif_guatemala'\n";
echo "   - Ejecutar: mysql -u root -p sif_guatemala < database/schema.sql\n";
echo "   - Verificar configuración en api/config/config.php\n\n";

echo "2. CREAR USUARIO DEMO:\n";
echo "   - Ejecutar: php create_demo_user.php\n\n";

echo "3. CONFIGURAR SERVIDOR WEB:\n";
echo "   - Asegurar que mod_rewrite esté habilitado\n";
echo "   - Verificar que .htaccess esté funcionando\n";
echo "   - Document root debe apuntar a la carpeta del proyecto\n\n";

echo "4. INICIAR SERVICIOS:\n";
echo "   - Backend PHP: Debe estar accesible en /api/\n";
echo "   - Frontend React: npm start (puerto 3000 por defecto)\n\n";

echo "5. PROBAR ACCESO:\n";
echo "   - API: http://localhost/api/ (debe mostrar información de la API)\n";
echo "   - Frontend: http://localhost:3000/\n";
echo "   - Login: admin@demo.com / demo123\n\n";

// 7. URLs de prueba
echo "=== URLS DE PRUEBA ===\n\n";

$base_url = "http://" . $_SERVER['HTTP_HOST'];
echo "Base URL detectada: $base_url\n\n";

echo "Prueba estas URLs en tu navegador:\n";
echo "- API Info: $base_url/api/\n";
echo "- Test Auth: $base_url/test_api_auth.php\n";
echo "- Este diagnóstico: $base_url/test_setup.php\n\n";

echo "=== FIN DEL DIAGNÓSTICO ===\n";
?>