<?php
/**
 * Procesar archivos TXT y verificar que los datos se guardaron
 * 
 * Este script:
 * 1. Procesa los archivos TXT del buque
 * 2. Verifica que los datos se hayan guardado en la base de datos
 * 3. Muestra un resumen
 */

require_once 'config.php';

// ============================================
// CONFIGURACIÓN
// ============================================
$carpetaArchivos = __DIR__ . '/archivos_buque/';
$carpetaProcesados = __DIR__ . '/archivos_buque/procesados/';
$apiUrl = 'http://localhost/buque/api/buque.php';

// ============================================
// FUNCIONES (copiadas de procesar_archivos_txt.php)
// ============================================

function crearCarpetas($carpetas) {
    foreach ($carpetas as $carpeta) {
        if (!is_dir($carpeta)) {
            mkdir($carpeta, 0755, true);
        }
    }
}

function enviarDatos($url, $datos) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $datos);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: text/plain']);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $error = curl_error($ch);
    curl_close($ch);
    
    if ($error) {
        return [
            'success' => false,
            'error' => $error,
            'http_code' => $httpCode
        ];
    }
    
    $jsonResponse = json_decode($response, true);
    
    return [
        'success' => $jsonResponse['success'] ?? false,
        'response' => $jsonResponse,
        'http_code' => $httpCode
    ];
}

function procesarArchivo($archivo, $apiUrl, $carpetaProcesados) {
    $nombreArchivo = basename($archivo);
    echo "\n📄 Procesando: $nombreArchivo\n";
    
    $lineas = file($archivo, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $enviados = 0;
    $errores = 0;
    $ids = [];
    
    foreach ($lineas as $numLinea => $linea) {
        $linea = trim($linea);
        
        if (empty($linea) || strpos($linea, '#') === 0) {
            continue;
        }
        
        $valores = explode(',', $linea);
        if (count($valores) < 4) {
            echo "  ⚠️  Línea " . ($numLinea + 1) . " ignorada (formato inválido)\n";
            echo "      Contenido recibido: \"$linea\"\n";
            echo "      Valores encontrados: " . count($valores) . " (se requieren mínimo 4)\n";
            $errores++;
            continue;
        }
        
        echo "  📤 Enviando línea " . ($numLinea + 1) . "... ";
        
        $resultado = enviarDatos($apiUrl, $linea);
        
        if ($resultado['success'] && $resultado['response']['success']) {
            $id = $resultado['response']['data']['id'] ?? null;
            if ($id) {
                $ids[] = $id;
            }
            echo "✅ OK (ID: $id)\n";
            $enviados++;
        } else {
            $mensaje = $resultado['response']['message'] ?? $resultado['error'] ?? 'Error desconocido';
            echo "❌ Error: $mensaje\n";
            $errores++;
        }
        
        usleep(100000);
    }
    
    echo "  📊 Resumen: $enviados enviados, $errores errores\n";
    
    if (is_dir($carpetaProcesados)) {
        $archivoProcesado = $carpetaProcesados . $nombreArchivo . '.' . date('YmdHis');
        if (rename($archivo, $archivoProcesado)) {
            echo "  ✅ Archivo movido a procesados\n";
        }
    } else {
        unlink($archivo);
        echo "  ✅ Archivo eliminado\n";
    }
    
    return ['enviados' => $enviados, 'errores' => $errores, 'ids' => $ids];
}

function verificarDatosEnBD($ids) {
    if (empty($ids)) {
        return [];
    }
    
    $pdo = getDBConnection();
    if (!$pdo) {
        return [];
    }
    
    $placeholders = implode(',', array_fill(0, count($ids), '?'));
    $stmt = $pdo->prepare("SELECT id, temperatura, humedad, presion, fecha FROM mediciones WHERE id IN ($placeholders) ORDER BY id DESC");
    $stmt->execute($ids);
    
    return $stmt->fetchAll();
}

// ============================================
// PROGRAMA PRINCIPAL
// ============================================

echo "===========================================\n";
echo "Procesador y Verificador de Archivos TXT\n";
echo "===========================================\n\n";

crearCarpetas([$carpetaArchivos, $carpetaProcesados]);

$patronArchivos = '*.txt';
$archivos = glob($carpetaArchivos . $patronArchivos);

if (empty($archivos)) {
    echo "📭 No se encontraron archivos TXT en: $carpetaArchivos\n";
    echo "   Ejecuta primero: php simular_buque_txt.php\n";
    exit(0);
}

echo "📁 Archivos encontrados: " . count($archivos) . "\n";

$totalEnviados = 0;
$totalErrores = 0;
$todosLosIds = [];

foreach ($archivos as $archivo) {
    $resultado = procesarArchivo($archivo, $apiUrl, $carpetaProcesados);
    $totalEnviados += $resultado['enviados'];
    $totalErrores += $resultado['errores'];
    $todosLosIds = array_merge($todosLosIds, $resultado['ids']);
}

echo "\n===========================================\n";
echo "📊 Resumen de Procesamiento\n";
echo "===========================================\n";
echo "Total enviados: $totalEnviados\n";
echo "Total errores: $totalErrores\n";
echo "Archivos procesados: " . count($archivos) . "\n";

if (!empty($todosLosIds)) {
    echo "\n===========================================\n";
    echo "✅ Verificación en Base de Datos\n";
    echo "===========================================\n";
    
    $datosVerificados = verificarDatosEnBD($todosLosIds);
    
    if (!empty($datosVerificados)) {
        echo "Se encontraron " . count($datosVerificados) . " registros en la BD:\n\n";
        foreach ($datosVerificados as $dato) {
            echo "  ID: {$dato['id']}\n";
            echo "    Temp: {$dato['temperatura']}°C\n";
            echo "    Hum: {$dato['humedad']}%\n";
            echo "    Pres: {$dato['presion']} hPa\n";
            echo "    Fecha: {$dato['fecha']}\n";
            echo "\n";
        }
    } else {
        echo "⚠️  No se encontraron los registros en la BD\n";
    }
}

echo "===========================================\n";
echo "💡 Verifica los datos en:\n";
echo "   http://localhost/buque/ver_datos.php\n";
echo "   http://localhost/buque/dashboard.php\n";
echo "===========================================\n";

