<?php
require_once 'config.php';

// Simple security check
if (!isset($_GET['key']) || $_GET['key'] !== 'TEC_RECONCILE_2026') {
    die("Unauthorized access");
}

$pdo = getDBConnection();
if (!$pdo)
    die("Error connecting to DB");

header('Content-Type: text/plain');

try {
    $pdo->beginTransaction();

    echo "--- RECONCILIACIÓN FINAL DE DATOS ---\n\n";

    $targetId = 'BOUCIÑA-01';
    $targetName = 'BOUCIÑA-01'; // Nombre unificado para evitar confusión Visual
    $oldIds = ['BUQUE-01', 'Bouciña', 'BOUCIÑA', 'Artica', 'BRICEL', 'Buque 02', 'Buque-02', 'FRIGORIFICO-01'];

    // 1. Unificar nombre del buque principal
    $pdo->prepare("UPDATE ships SET name = :name WHERE ship_id = :target")
        ->execute([':name' => $targetName, ':target' => $targetId]);
    echo "1. NOMBRE ACTUALIZADO: El buque $targetId ahora se llama '$targetName'.\n";

    // 2. Limpiar Sensor Positions (Deduplicación agresiva)
    // Nos quedamos con los sensores de BOUCIÑA-01 (que tiene 16), borramos el resto de los IDs viejos.
    $stmt = $pdo->prepare("DELETE FROM sensor_positions WHERE buque_id IN ('" . implode("','", $oldIds) . "')");
    $stmt->execute();
    echo "2. SENSORES LIMPIADOS: Se eliminaron " . $stmt->rowCount() . " sensores de IDs antiguos.\n";

    // 3. Limpiar Sensor Config (Deduplicación agresiva)
    $stmt = $pdo->prepare("DELETE FROM sensor_temperature_config WHERE buque_id IN ('" . implode("','", $oldIds) . "')");
    $stmt->execute();
    echo "3. CONFIGURACION LIMPIADA: Se eliminaron " . $stmt->rowCount() . " configs de IDs antiguos.\n";

    // --- 1. UNIFICACIÓN DE IDENTIDAD ---
    // Asegurar que el ID oficial es BOUCIÑA-01 y el nombre también
    $pdo->prepare("UPDATE ships SET name = 'BOUCIÑA-01' WHERE ship_id = 'BOUCIÑA-01'")->execute();

    // --- 2. MIGRACIÓN DE DATOS HUÉRFANOS ---
    $variaciones = ['BUQUE-01', 'Bouciña', 'BOUCIÑA'];
    foreach ($variaciones as $var) {
        // Mover mediciones
        $pdo->prepare("UPDATE mediciones SET buque_id = 'BOUCIÑA-01' WHERE buque_id = ?")->execute([$var]);
        // Mover posiciones de sensores
        $pdo->prepare("UPDATE sensor_positions SET buque_id = 'BOUCIÑA-01' WHERE buque_id = ?")->execute([$var]);
        // Mover config de temperatura
        $pdo->prepare("UPDATE sensor_temperature_config SET ship_id = 'BOUCIÑA-01' WHERE ship_id = ?")->execute([$var]);
    }

    // --- 3. LIMPIEZA DE DUPLICADOS EN CONFIGURACIÓN ---
    // Borrar configuraciones que no pertenezcan a los barcos activos
    $activeShips = ['BOUCIÑA-01', 'Heladera-01'];
    $placeholders = implode(',', array_fill(0, count($activeShips), '?'));

    $pdo->prepare("DELETE FROM sensor_positions WHERE buque_id NOT IN ($placeholders)")->execute($activeShips);
    $pdo->prepare("DELETE FROM sensor_temperature_config WHERE ship_id NOT IN ($placeholders)")->execute($activeShips);

    // --- 4. ASIGNACIÓN DE USUARIOS ---
    $pdo->prepare("UPDATE users SET ship_id = 'BOUCIÑA-01' WHERE ship_id IN ('BUQUE-01', 'Bouciña', 'BOUCIÑA') OR (username = 'Alejandro' AND ship_id IS NULL)")->execute();
    $pdo->prepare("UPDATE user_ships SET ship_id = 'BOUCIÑA-01' WHERE ship_id IN ('BUQUE-01', 'Bouciña', 'BOUCIÑA')")->execute();

    echo "<h1>Reconciliación Exitosa</h1>";
    echo "<ul>";
    echo "<li>Identidad unificada a BOUCIÑA-01</li>";
    echo "<li>Datos de variaciones antiguas migrados</li>";
    echo "<li>Configuraciones huérfanas eliminadas</li>";
    echo "<li>Usuarios actualizados</li>";
    echo "</ul>";
    echo "<p><strong>IMPORTANTE:</strong> Por favor, cierra sesión y vuelve a entrar para aplicar los cambios de permisos.</p>";

    $pdo->commit();

    // Inyectar flag en sesión si se corre desde navegador
    session_start();
    $_SESSION['user_ships_updated'] = true;

} catch (Exception $e) {
    if ($pdo->inTransaction())
        $pdo->rollBack();
    echo "ERROR: " . $e->getMessage();
}
?>