<?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; charset=utf-8');

try {
    $pdo->beginTransaction();

    echo "--- RECONCILIACIÓN FINAL DE DATOS (SCHEMA VERIFIED) ---\n\n";

    $targetId = 'BOUCIÑA-01';
    $targetName = 'BOUCIÑA-01';
    $oldIds = ['BUQUE-01', 'Bouciña', 'BOUCIÑA', 'Artica', 'BRICEL', 'Buque 02', 'Buque-02', 'FRIGORIFICO-01'];

    // 1. Unificar nombre del buque principal (Tabla ships usa ship_id)
    $stmt1 = $pdo->prepare("UPDATE ships SET name = :name WHERE ship_id = :target");
    $stmt1->execute([':name' => $targetName, ':target' => $targetId]);
    echo "1. NOMBRE ACTUALIZADO en 'ships': " . ($stmt1->rowCount() > 0 ? "SÍ" : "Ya estaba correcto") . ".\n";

    // 2. Limpiar Sensor Positions (Tabla sensor_positions usa buque_id)
    $stmt2 = $pdo->prepare("DELETE FROM sensor_positions WHERE buque_id IN ('" . implode("','", $oldIds) . "')");
    $stmt2->execute();
    echo "2. SENSORES LIMPIADOS en 'sensor_positions': Se eliminaron " . $stmt2->rowCount() . " registros.\n";

    // 3. Limpiar Sensor Config (Tabla sensor_temperature_config usa buque_id)
    $stmt3 = $pdo->prepare("DELETE FROM sensor_temperature_config WHERE buque_id IN ('" . implode("','", $oldIds) . "')");
    $stmt3->execute();
    echo "3. CONFIGURACION LIMPIADA en 'sensor_temperature_config': Se eliminaron " . $stmt3->rowCount() . " registros.\n";

    // 4. Migrar mediciones (Tabla mediciones usa buque_id)
    $totalMediciones = 0;
    foreach ($oldIds as $old) {
        $stmtM = $pdo->prepare("UPDATE mediciones SET buque_id = :target WHERE buque_id = :old");
        $stmtM->execute([':target' => $targetId, ':old' => $old]);
        $totalMediciones += $stmtM->rowCount();
    }
    echo "4. MEDICIONES MGRADAS: Se movieron $totalMediciones registros al ID $targetId.\n";

    // 5. Unificar posiciones y configs huérfanas (Por si quedaron sueltas)
    foreach ($oldIds as $old) {
        $pdo->prepare("UPDATE sensor_positions SET buque_id = :target WHERE buque_id = :old")->execute([':target' => $targetId, ':old' => $old]);
        $pdo->prepare("UPDATE sensor_temperature_config SET buque_id = :target WHERE buque_id = :old")->execute([':target' => $targetId, ':old' => $old]);
    }
    echo "5. CONFIGURACIONES HUÉRFANAS: Procesadas.\n";

    // 6. Limpieza agresiva de duplicados (Dejar solo los activos)
    $activeShips = ['BOUCIÑA-01', 'Heladera-01'];
    $placeholders = implode(',', array_fill(0, count($activeShips), '?'));

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

    $stmtDelConf = $pdo->prepare("DELETE FROM sensor_temperature_config WHERE buque_id NOT IN ($placeholders)");
    $stmtDelConf->execute($activeShips);
    echo "6. LIMPIEZA GLOBAL: Solo quedan configuraciones de " . implode(', ', $activeShips) . ".\n";

    // 7. Asignación de Usuarios (Tablas users y user_ships usan ship_id)
    $stmtU = $pdo->prepare("UPDATE users SET ship_id = :target WHERE ship_id IN ('" . implode("','", $oldIds) . "') OR (username = 'Alejandro' AND ship_id IS NULL)");
    $stmtU->execute([':target' => $targetId]);

    $stmtUS = $pdo->prepare("UPDATE user_ships SET ship_id = :target WHERE ship_id IN ('" . implode("','", $oldIds) . "')");
    $stmtUS->execute([':target' => $targetId]);
    echo "7. USUARIOS ACTUALIZADOS: Se actualizaron asignaciones en 'users' y 'user_ships'.\n";

    $pdo->commit();
    echo "\n¡RECONCILIACIÓN EXITOSA!\n";
    echo "Todo ha sido unificado bajo '$targetId'.\n";
    echo "IMPORTANTE: Por favor, CIERRA SESIÓN y vuelve a entrar para aplicar los cambios.\n";

    // Actualizar flag de sesión
    if (session_status() === PHP_SESSION_NONE)
        session_start();
    $_SESSION['user_ships_updated'] = true;

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