<?php

/**
 * Actualización del archivo test_conexion.php para incluir autenticación
 * 
 * Este script probará la conexión a la base de datos y al endpoint utilizando
 * las credenciales proporcionadas para autenticarse correctamente
 */
// Cargar archivo de configuración
require_once __DIR__ . '/config.php';

echo "Test de conexión a base de datos\n";
echo "===============================\n\n";

echo "Configuración:\n";
echo "Host: {$db_config['host']}\n";
echo "Base de datos: {$db_config['name']}\n";
echo "Usuario: {$db_config['user']}\n";
echo "Charset: {$db_config['charset']}\n\n";

// Intentar conexión a base de datos
try {
    $db = new PDO(
            "mysql:host={$db_config['host']};dbname={$db_config['name']};charset={$db_config['charset']}",
            $db_config['user'],
            $db_config['pass']
    );
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "✓ Conexión exitosa a la base de datos\n\n";

    // Verificar tablas necesarias
    $tablas = [
        'numeros_economicos' => false
    ];

    $stmt = $db->query("SHOW TABLES");
    while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
        if (isset($tablas[$row[0]])) {
            $tablas[$row[0]] = true;
        }
    }

    foreach ($tablas as $tabla => $existe) {
        echo ($existe ? "✓" : "✗") . " Tabla '$tabla': " . ($existe ? "Presente" : "No encontrada") . "\n";
    }

    // Probar autenticación y conexión al endpoint
    echo "\nAutenticando y probando conexión al endpoint...\n";

    $url_base = 'http://74.208.26.126/caronte_test/';
    $usuario = 'soporte';
    $contra = '202cb962ac59075b964b07152d234b70';
    $contra_nueva = '40bd001563085fc35165329ea1ff5c5ecbdbbeef';
    $cookie_de_sesion = '';
    $respuesta_sesion_activa = file_get_contents($url_base . 'public_html/index.php/api/auth/session_activa');
    //echo "Respuesta sesión activa: " . json_encode($respuesta_sesion_activa);

    $encabezado_respuesta = $http_response_header;
    if (is_array($encabezado_respuesta) && count($encabezado_respuesta) > 0) {
        foreach ($encabezado_respuesta as $elemento) {
            if (substr($elemento, 0, 10) == 'Set-Cookie') {
                $cookie_de_sesion = substr($elemento, 4, 44);
            }
        }
    }
    echo "encabezado respuesta: " . json_encode($encabezado_respuesta);

    $postdata = http_build_query(
            array(
                'username' => $usuario,
                'password' => $contra_nueva,
                'new_password' => $contra_nueva,
                'intentos_captcha' => '1'
            )
    );

    $optsLogin = array('http' =>
        array(
            'method' => 'POST',
            'header' => "Content-Type: application/x-www-form-urlencoded\r\n" .
            "$cookie_de_sesion\r\n",
            'content' => $postdata
        )
    );

    $optsGets = array('http' =>
        array(
            'method' => 'GET',
            'header' => "$cookie_de_sesion\r\n"
        )
    );

    $context = stream_context_create($optsLogin);
    $respuesta_login = file_get_contents($url_base . 'public_html/index.php/api/auth/acceso?v=0.60933668797657031', false, $context);
//file_put_contents("./cron_result.txt", "IST — -> " . date("Y-m-d H:i:s") ."\t\t\t" . $respuesta_login . "\n",FILE_APPEND);
    echo "Respuesta al inicio de sesión: $respuesta_login";

    $respuesta_sesion_activa = file_get_contents($url_base . 'public_html/index.php/api/auth/session_activa', false, stream_context_create($optsGets));
    echo "Sesión activa " . json_encode($respuesta_sesion_activa) . "\n";
    echo file_get_contents($url_base . "public_html/index.php/api/numeros_economicos/get_all_numeros_economicos_activos_for_sync_olimpica", false, stream_context_create($optsGets)) . "\n";
    
} catch (PDOException $e) {
    echo "✗ Error de conexión a la base de datos: " . $e->getMessage() . "\n";
    echo "\nRecomendaciones:\n";
    echo "1. Verifica que el servidor MySQL esté en ejecución\n";
    echo "2. Verifica que el usuario y la contraseña sean correctos\n";
    echo "3. Comprueba que la base de datos '{$db_config['name']}' exista\n";
    echo "4. Revisa el archivo config.php y actualiza los valores si es necesario\n";
} catch (Exception $e) {
    echo "✗ Error general: " . $e->getMessage() . "\n";
}