<?php
/**
 * Script de Verificación Post-Instalación
 * Verifica que el sistema esté funcionando correctamente en el servidor
 * Fecha: 4 de enero de 2026
 */

echo "<!DOCTYPE html><html lang='es'><head><meta charset='UTF-8'>";
echo "<title>🔍 Verificación del Sistema WhatsApp Bot</title>";
echo "<style>body{font-family:Arial,sans-serif;margin:20px;background:#f5f5f5}";
echo ".container{max-width:800px;margin:0 auto;background:white;padding:20px;border-radius:10px;box-shadow:0 2px 10px rgba(0,0,0,0.1)}";
echo ".success{color:#28a745;background:#d4edda;padding:10px;border-radius:5px;margin:5px 0}";
echo ".error{color:#dc3545;background:#f8d7da;padding:10px;border-radius:5px;margin:5px 0}";
echo ".warning{color:#856404;background:#fff3cd;padding:10px;border-radius:5px;margin:5px 0}";
echo ".info{color:#0c5460;background:#d1ecf1;padding:10px;border-radius:5px;margin:5px 0}";
echo "h1{color:#333;text-align:center}h2{color:#666;border-bottom:2px solid #eee;padding-bottom:10px}";
echo "</style></head><body>";

echo "<div class='container'>";
echo "<h1>🔍 Verificación del Sistema WhatsApp Bot</h1>";
echo "<p><strong>Fecha:</strong> " . date('Y-m-d H:i:s') . "</p>";

$errors = 0;
$warnings = 0;
$successes = 0;

// 1. Verificar archivos principales
echo "<h2>📁 Verificación de Archivos</h2>";

$requiredFiles = [
    'config/config.php' => 'Archivo de configuración principal',
    'classes/Database.php' => 'Clase de base de datos',
    'login.php' => 'Sistema de login',
    'index.php' => 'Dashboard principal',
    'api/webhook.php' => 'Webhook de WhatsApp',
    'api/send_message.php' => 'API de envío de mensajes'
];

foreach ($requiredFiles as $file => $description) {
    if (file_exists($file)) {
        echo "<div class='success'>✅ $file - $description</div>";
        $successes++;
    } else {
        echo "<div class='error'>❌ $file - $description FALTANTE</div>";
        $errors++;
    }
}

// 2. Verificar configuración
echo "<h2>⚙️ Verificación de Configuración</h2>";

if (file_exists('config/config.php')) {
    try {
        require_once 'config/config.php';
        echo "<div class='success'>✅ Archivo config.php cargado correctamente</div>";
        $successes++;
        
        // Verificar constantes
        $constants = ['DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS'];
        foreach ($constants as $const) {
            if (defined($const)) {
                echo "<div class='success'>✅ Constante $const definida</div>";
                $successes++;
            } else {
                echo "<div class='error'>❌ Constante $const NO definida</div>";
                $errors++;
            }
        }
        
    } catch (Exception $e) {
        echo "<div class='error'>❌ Error cargando configuración: " . $e->getMessage() . "</div>";
        $errors++;
    }
} else {
    echo "<div class='error'>❌ Archivo config.php no encontrado</div>";
    $errors++;
}

// 3. Verificar base de datos
echo "<h2>🗄️ Verificación de Base de Datos</h2>";

if (defined('DB_HOST') && defined('DB_NAME') && defined('DB_USER') && defined('DB_PASS')) {
    try {
        $dsn = "mysql:host=" . DB_HOST . ";port=" . (defined('DB_PORT') ? DB_PORT : 3306) . ";dbname=" . DB_NAME . ";charset=utf8mb4";
        $pdo = new PDO($dsn, DB_USER, DB_PASS);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
        echo "<div class='success'>✅ Conexión a base de datos exitosa</div>";
        $successes++;
        
        // Verificar tablas principales
        $tables = ['conversations', 'conversations', 'system_config', 'message_templates'];
        foreach ($tables as $table) {
            $stmt = $pdo->query("SHOW TABLES LIKE '$table'");
            if ($stmt->rowCount() > 0) {
                echo "<div class='success'>✅ Tabla '$table' existe</div>";
                $successes++;
            } else {
                echo "<div class='warning'>⚠️ Tabla '$table' no existe (puede necesitar importar schema.sql)</div>";
                $warnings++;
            }
        }
        
    } catch (PDOException $e) {
        echo "<div class='error'>❌ Error de conexión a base de datos: " . $e->getMessage() . "</div>";
        $errors++;
    }
} else {
    echo "<div class='error'>❌ Configuración de base de datos incompleta</div>";
    $errors++;
}

// 4. Verificar permisos
echo "<h2>🔐 Verificación de Permisos</h2>";

$writableDirs = ['logs/', 'uploads/'];
foreach ($writableDirs as $dir) {
    if (is_dir($dir)) {
        if (is_writable($dir)) {
            echo "<div class='success'>✅ Directorio '$dir' tiene permisos de escritura</div>";
            $successes++;
        } else {
            echo "<div class='error'>❌ Directorio '$dir' NO tiene permisos de escritura (chmod 777 $dir)</div>";
            $errors++;
        }
    } else {
        echo "<div class='warning'>⚠️ Directorio '$dir' no existe</div>";
        $warnings++;
    }
}

// 5. Verificar APIs
echo "<h2>🔌 Verificación de APIs</h2>";

$apis = [
    'api/send_message.php',
    'api/webhook.php',
    'api/get_system_config.php',
    'api/save_system_config.php',
    'api/get_templates.php'
];

foreach ($apis as $api) {
    if (file_exists($api)) {
        // Verificar que usa la ruta correcta
        $content = file_get_contents($api);
        if (strpos($content, "require_once 'config/config.php'") !== false) {
            echo "<div class='success'>✅ API '$api' - Ruta de configuración correcta</div>";
            $successes++;
        } else {
            echo "<div class='error'>❌ API '$api' - Ruta de configuración incorrecta</div>";
            $errors++;
        }
        
        // Verificar autenticación
        if (strpos($content, 'requireAuthentication()') !== false) {
            echo "<div class='success'>✅ API '$api' - Requiere autenticación</div>";
            $successes++;
        } else {
            echo "<div class='warning'>⚠️ API '$api' - No requiere autenticación</div>";
            $warnings++;
        }
    } else {
        echo "<div class='error'>❌ API '$api' no encontrada</div>";
        $errors++;
    }
}

// 6. Verificar PHP
echo "<h2>🐘 Verificación de PHP</h2>";

$phpVersion = phpversion();
if (version_compare($phpVersion, '7.4', '>=')) {
    echo "<div class='success'>✅ Versión PHP: $phpVersion (Compatible)</div>";
    $successes++;
} else {
    echo "<div class='error'>❌ Versión PHP: $phpVersion (Requiere 7.4+)</div>";
    $errors++;
}

$requiredExtensions = ['pdo', 'pdo_mysql', 'curl', 'json'];
foreach ($requiredExtensions as $ext) {
    if (extension_loaded($ext)) {
        echo "<div class='success'>✅ Extensión PHP '$ext' disponible</div>";
        $successes++;
    } else {
        echo "<div class='error'>❌ Extensión PHP '$ext' NO disponible</div>";
        $errors++;
    }
}

// Resumen final
echo "<h2>📊 Resumen de Verificación</h2>";

$total = $successes + $errors + $warnings;

echo "<div class='info'>";
echo "<h3>Estadísticas:</h3>";
echo "✅ <strong>Éxitos:</strong> $successes<br>";
echo "❌ <strong>Errores:</strong> $errors<br>";
echo "⚠️ <strong>Advertencias:</strong> $warnings<br>";
echo "📊 <strong>Total verificaciones:</strong> $total<br>";

if ($errors == 0) {
    echo "<br><div class='success'><strong>🎉 ¡SISTEMA LISTO PARA USAR!</strong><br>";
    echo "El sistema está correctamente configurado y funcionando.</div>";
    echo "<br><strong>Próximos pasos:</strong><br>";
    echo "1. Acceder a <a href='login.php'>login.php</a><br>";
    echo "2. Usuario: <strong>admin</strong><br>";
    echo "3. Contraseña: <strong>2fa904eee46f</strong><br>";
    echo "4. Configurar tokens de WhatsApp en el dashboard<br>";
} elseif ($errors <= 2) {
    echo "<br><div class='warning'><strong>⚠️ Sistema casi listo</strong><br>";
    echo "Hay algunos errores menores que corregir.</div>";
} else {
    echo "<br><div class='error'><strong>❌ Requiere atención</strong><br>";
    echo "Hay varios errores que necesitan ser corregidos antes del uso.</div>";
}

echo "</div>";

// Información adicional
echo "<h2>📋 Información Adicional</h2>";
echo "<div class='info'>";
echo "<strong>Servidor:</strong> " . $_SERVER['SERVER_SOFTWARE'] . "<br>";
echo "<strong>PHP:</strong> " . PHP_VERSION . "<br>";
echo "<strong>Directorio actual:</strong> " . __DIR__ . "<br>";
echo "<strong>URL actual:</strong> " . (isset($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . "<br>";
echo "</div>";

echo "</div></body></html>";
?>