<?php
header('Content-Type: text/html; charset=utf-8');

echo "<h1>🔍 Investigar Trigger Suspeito</h1>";

try {
    $host = 'localhost';
    $dbname = 'pinheir3_controle_frotasV1.1';
    $username = 'pinheir3_admin';
    $password = '080880Gelboy';
    
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);
    
    echo "<h2>1️⃣ Verificando Estrutura Completa dos Triggers</h2>";
    
    // Verificar estrutura completa dos triggers
    $stmt = $pdo->prepare("
        SELECT 
            TRIGGER_NAME,
            EVENT_MANIPULATION,
            ACTION_TIMING,
            ACTION_STATEMENT,
            ACTION_ORIENTATION
        FROM INFORMATION_SCHEMA.TRIGGERS 
        WHERE TRIGGER_SCHEMA = ? AND EVENT_OBJECT_TABLE = 'viagens'
    ");
    $stmt->execute([$dbname]);
    $triggersCompletos = $stmt->fetchAll();
    
    if (count($triggersCompletos) > 0) {
        echo "<div style='background: #fff3cd; padding: 15px; border-radius: 5px; border: 1px solid #ffeaa7;'>";
        echo "<h3>⚠️ TRIGGERS COMPLETOS:</h3>";
        echo "<table border='1' style='border-collapse: collapse; margin: 10px 0; width: 100%;'>";
        echo "<tr><th>Nome</th><th>Evento</th><th>Tempo</th><th>Orientação</th><th>Comando</th></tr>";
        foreach ($triggersCompletos as $t) {
            echo "<tr>";
            echo "<td>{$t['TRIGGER_NAME']}</td>";
            echo "<td>{$t['EVENT_MANIPULATION']}</td>";
            echo "<td>{$t['ACTION_TIMING']}</td>";
            echo "<td>{$t['ACTION_ORIENTATION']}</td>";
            echo "<td style='max-width: 300px; word-wrap: break-word;'>{$t['ACTION_STATEMENT']}</td>";
            echo "</tr>";
        }
        echo "</table>";
        echo "</div>";
    }
    
    echo "<h2>2️⃣ Verificando Se Há Outros Triggers Ocultos</h2>";
    
    // Verificar se há outros triggers que podem estar interferindo
    $stmt = $pdo->prepare("
        SHOW TRIGGERS
    ");
    $stmt->execute();
    $todosTriggers = $stmt->fetchAll();
    
    echo "<p><strong>Total de triggers no banco:</strong> " . count($todosTriggers) . "</p>";
    
    if (count($todosTriggers) > 0) {
        echo "<table border='1' style='border-collapse: collapse; margin: 10px 0; width: 100%;'>";
        echo "<tr><th>Tabela</th><th>Nome</th><th>Evento</th><th>Tempo</th><th>Comando</th></tr>";
        foreach ($todosTriggers as $t) {
            echo "<tr>";
            echo "<td>{$t['Table']}</td>";
            echo "<td>{$t['Trigger']}</td>";
            echo "<td>{$t['Event']}</td>";
            echo "<td>{$t['Timing']}</td>";
            echo "<td style='max-width: 200px; word-wrap: break-word;'>{$t['Statement']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    }
    
    echo "<h2>3️⃣ Teste de Atualização com Trigger Desabilitado</h2>";
    
    // Desabilitar temporariamente o trigger
    echo "<p><strong>Desabilitando trigger temporariamente...</strong></p>";
    
    try {
        $pdo->exec("DROP TRIGGER IF EXISTS tr_viagem_update");
        echo "<p style='color: green;'>✅ Trigger tr_viagem_update desabilitado temporariamente</p>";
        
        echo "<h3>🔧 Testando Atualização sem Trigger</h3>";
        
        // Atualizar viagem #1
        $stmt = $pdo->prepare("UPDATE viagens SET km_gps_final = 52000 WHERE id = 1");
        $stmt->execute();
        
        if ($stmt->rowCount() > 0) {
            echo "<p style='color: green;'>✅ Atualização realizada sem trigger!</p>";
            
            // Verificar se foi atualizado
            $stmt = $pdo->prepare("SELECT km_gps_final FROM viagens WHERE id = 1");
            $stmt->execute();
            $resultado = $stmt->fetch();
            
            echo "<p><strong>Valor após atualização sem trigger:</strong> {$resultado['km_gps_final']} metros</p>";
            
            if ($resultado['km_gps_final'] == 52000) {
                echo "<p style='color: green; font-weight: bold;'>🎉 PROBLEMA RESOLVIDO! O TRIGGER ESTAVA INTERFERINDO!</p>";
            } else {
                echo "<p style='color: red;'>❌ VALOR AINDA INCORRETO! Outro problema existe</p>";
            }
        } else {
            echo "<p style='color: red;'>❌ Erro na atualização</p>";
        }
        
        echo "<h3>🔄 Recriando Trigger</h3>";
        
        // Recriar o trigger
        $triggerSQL = "
        CREATE TRIGGER tr_viagem_update 
        AFTER UPDATE ON viagens 
        FOR EACH ROW 
        BEGIN 
            INSERT INTO system_logs (level, message, context) VALUES (
                'info', 
                'Viagem atualizada', 
                JSON_OBJECT(
                    'viagem_id', NEW.id, 
                    'tecnico_id', NEW.tecnico_id, 
                    'action', 'update'
                )
            ); 
        END
        ";
        
        $pdo->exec($triggerSQL);
        echo "<p style='color: green;'>✅ Trigger recriado com sucesso</p>";
        
    } catch (Exception $e) {
        echo "<p style='color: red;'>❌ Erro ao manipular trigger: " . $e->getMessage() . "</p>";
    }
    
    echo "<h2>4️⃣ Verificando Se Há Código PHP Interferindo</h2>";
    
    echo "<div style='background: #d1ecf1; padding: 15px; border-radius: 5px; border: 1px solid #bee5eb;'>";
    echo "<h3>🔍 INVESTIGAÇÃO ADICIONAL:</h3>";
    echo "<p>Se o trigger não for o problema, verifique:</p>";
    echo "<ol>";
    echo "<li><strong>Arquivos PHP</strong> que podem estar executando após UPDATE</li>";
    echo "<li><strong>Valor padrão</strong> na coluna km_gps_final</li>";
    echo "<li><strong>Validação automática</strong> no código</li>";
    echo "<li><strong>Outros processos</strong> que monitoram a tabela viagens</li>";
    echo "</ol>";
    echo "</div>";
    
    echo "<h2>5️⃣ Próximos Passos</h2>";
    
    echo "<div style='background: #d4edda; padding: 15px; border-radius: 5px; border: 1px solid #c3e6cb;'>";
    echo "<h3>✅ AÇÃO IMEDIATA:</h3>";
    echo "<ol>";
    echo "<li><strong>Verifique o resultado</strong> do teste sem trigger</li>";
    echo "<li><strong>Se funcionou</strong>, o trigger estava interferindo</li>";
    echo "<li><strong>Se não funcionou</strong>, há outro problema</li>";
    echo "<li><strong>Atualize o dashboard</strong> para ver se o KM GPS está correto</li>";
    echo "</ol>";
    echo "</div>";
    
} catch (PDOException $e) {
    echo "<p style='color: red;'>❌ Erro de banco: " . $e->getMessage() . "</p>";
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro geral: " . $e->getMessage() . "</p>";
}
?>
