<?php
/**
 * Script de diagnóstico para probar la conexión con la API externa
 * Acceder desde: /wp-content/plugins/secmca-api/test-api-connection.php
 */

// Cargar WordPress
require_once('../../../../wp-load.php');

// Verificar que el usuario sea administrador
if (!current_user_can('administrator')) {
    die('Acceso denegado. Solo administradores pueden ver este diagnóstico.');
}

echo '<html><head><title>Diagnóstico API SECMCA</title>';
echo '<style>
body { font-family: Arial, sans-serif; margin: 20px; background: #f5f5f5; }
.container { max-width: 1200px; margin: 0 auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
h1 { color: #333; border-bottom: 2px solid #0073aa; padding-bottom: 10px; }
h2 { color: #0073aa; margin-top: 30px; }
.success { color: #46b450; background: #ecf7ed; padding: 10px; border-left: 4px solid #46b450; margin: 10px 0; }
.error { color: #dc3232; background: #fef7f7; padding: 10px; border-left: 4px solid #dc3232; margin: 10px 0; }
.info { color: #0073aa; background: #f0f6fc; padding: 10px; border-left: 4px solid #0073aa; margin: 10px 0; }
.warning { color: #f56e28; background: #fef8f3; padding: 10px; border-left: 4px solid #f56e28; margin: 10px 0; }
pre { background: #23282d; color: #f0f0f0; padding: 15px; border-radius: 4px; overflow-x: auto; }
table { width: 100%; border-collapse: collapse; margin: 15px 0; }
table td, table th { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
table th { background: #f9f9f9; font-weight: bold; }
.code { background: #f5f5f5; padding: 2px 6px; border-radius: 3px; font-family: monospace; }
</style></head><body>';

echo '<div class="container">';
echo '<h1>🔍 Diagnóstico de Conexión API SECMCA</h1>';

// 1. Obtener configuración
echo '<h2>1. Configuración Actual</h2>';

$user = carbon_get_theme_option('crb_admin');
$password = carbon_get_theme_option('crb_pass');
$url_base = carbon_get_theme_option('crb_url_base1');
$url_auth = carbon_get_theme_option('crb_url_login');
$url_validate = carbon_get_theme_option('crb_url_validate');

echo '<table>';
echo '<tr><th>Campo</th><th>Valor</th></tr>';
echo '<tr><td>Usuario</td><td>' . ($user ? '✓ Configurado' : '✗ No configurado') . '</td></tr>';
echo '<tr><td>Password</td><td>' . ($password ? '✓ Configurado' : '✗ No configurado') . '</td></tr>';
echo '<tr><td>URL Base</td><td><code>' . ($url_base ? $url_base : '✗ No configurado') . '</code></td></tr>';
echo '<tr><td>URL Auth</td><td><code>' . ($url_auth ? $url_auth : '✗ No configurado') . '</code></td></tr>';
echo '<tr><td>URL Validate</td><td><code>' . ($url_validate ? $url_validate : '✗ No configurado') . '</code></td></tr>';
echo '</table>';

// 2. Probar conectividad básica
echo '<h2>2. Prueba de Conectividad</h2>';

if ($url_base) {
    $full_url = $url_base . $url_auth;
    echo '<div class="info">Intentando conectar a: <code>' . $full_url . '</code></div>';
    
    $ch = curl_init($full_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_NOBODY, true); // Solo HEAD request
    
    $result = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $error = curl_error($ch);
    $errno = curl_errno($ch);
    
    if ($errno) {
        echo '<div class="error">❌ Error de conexión: ' . $error . ' (Código: ' . $errno . ')</div>';
        echo '<div class="warning">Posibles causas:<ul>';
        echo '<li>El servidor está apagado o no es accesible</li>';
        echo '<li>La URL está mal configurada</li>';
        echo '<li>Problema de red o firewall</li>';
        echo '<li>El puerto 8080 no está abierto</li>';
        echo '</ul></div>';
    } else {
        echo '<div class="success">✅ Conexión exitosa - Código HTTP: ' . $http_code . '</div>';
    }
    
    curl_close($ch);
} else {
    echo '<div class="error">❌ URL Base no está configurada</div>';
}

// 3. Probar autenticación
echo '<h2>3. Prueba de Autenticación</h2>';

if ($url_base && $url_auth && $user && $password) {
    $data = array(
        'user' => $user,
        'password' => $password
    );
    
    $payload = json_encode($data);
    $LOGINURL = $url_base . $url_auth;
    
    echo '<div class="info">Enviando credenciales a: <code>' . $LOGINURL . '</code></div>';
    
    $ch = curl_init($LOGINURL);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($payload)
    ));
    
    $result = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $error = curl_error($ch);
    $errno = curl_errno($ch);
    
    if ($errno) {
        echo '<div class="error">❌ Error: ' . $error . '</div>';
    } else {
        echo '<div class="success">✅ Respuesta recibida - Código HTTP: ' . $http_code . '</div>';
        
        $jsonToken = json_decode($result, true);
        
        if (isset($jsonToken["JWT"])) {
            echo '<div class="success">✅ Token JWT obtenido correctamente</div>';
            echo '<div class="info">Token (primeros 50 caracteres): <code>' . substr($jsonToken["JWT"], 0, 50) . '...</code></div>';
        } else {
            echo '<div class="error">❌ No se pudo obtener el token JWT</div>';
            echo '<div class="warning">Respuesta del servidor:</div>';
            echo '<pre>' . htmlspecialchars(print_r($jsonToken, true)) . '</pre>';
        }
    }
    
    curl_close($ch);
} else {
    echo '<div class="error">❌ Faltan configuraciones necesarias para autenticación</div>';
}

// 4. Información del sistema
echo '<h2>4. Información del Sistema</h2>';
echo '<table>';
echo '<tr><td>PHP Version</td><td>' . phpversion() . '</td></tr>';
echo '<tr><td>cURL habilitado</td><td>' . (function_exists('curl_version') ? '✅ Sí' : '❌ No') . '</td></tr>';
if (function_exists('curl_version')) {
    $curl_version = curl_version();
    echo '<tr><td>cURL Version</td><td>' . $curl_version['version'] . '</td></tr>';
}
echo '<tr><td>WordPress Version</td><td>' . get_bloginfo('version') . '</td></tr>';
echo '<tr><td>Usuario logueado</td><td>' . (is_user_logged_in() ? '✅ Sí' : '❌ No') . '</td></tr>';
echo '</table>';

// 5. Comandos útiles
echo '<h2>5. Comandos Útiles para Diagnóstico</h2>';
echo '<div class="info">';
echo '<p>Desde la terminal, puedes probar la conexión con:</p>';
echo '<pre>curl -v ' . ($url_base ? $url_base . $url_auth : 'URL_NO_CONFIGURADA') . '</pre>';
echo '<p>O probar si el puerto está abierto:</p>';
echo '<pre>nc -zv 192.168.100.133 8080</pre>';
echo '</div>';

echo '<hr>';
echo '<p style="text-align: center; color: #666; margin-top: 30px;">Para ocultar este diagnóstico, elimina o renombra el archivo <code>test-api-connection.php</code></p>';
echo '</div></body></html>';
