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

echo "<h1>🚨 Investigar Corrupção de Dados</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 Triggers na Tabela viagens</h2>";
    
    // Verificar se há triggers
    $stmt = $pdo->prepare("
        SHOW TRIGGERS WHERE `Table` = 'viagens'
    ");
    $stmt->execute();
    $triggers = $stmt->fetchAll();
    
    if (count($triggers) > 0) {
        echo "<div style='background: #fff3cd; padding: 15px; border-radius: 5px; border: 1px solid #ffeaa7;'>";
        echo "<h3>⚠️ TRIGGERS ENCONTRADOS:</h3>";
        echo "<table border='1' style='border-collapse: collapse; margin: 10px 0;'>";
        echo "<tr><th>Nome</th><th>Evento</th><th>Tempo</th><th>Comando</th></tr>";
        foreach ($triggers as $t) {
            echo "<tr>";
            echo "<td>{$t['Trigger']}</td>";
            echo "<td>{$t['Event']}</td>";
            echo "<td>{$t['Timing']}</td>";
            echo "<td>{$t['Statement']}</td>";
            echo "</tr>";
        }
        echo "</table>";
        echo "</div>";
    } else {
        echo "<p style='color: green;'>✅ Nenhum trigger encontrado na tabela viagens</p>";
    }
    
    echo "<h2>2️⃣ Verificando Procedures</h2>";
    
    // Verificar procedures
    $stmt = $pdo->prepare("SHOW PROCEDURE STATUS WHERE Db = ?");
    $stmt->execute([$dbname]);
    $procedures = $stmt->fetchAll();
    
    if (count($procedures) > 0) {
        echo "<p><strong>Procedures encontradas:</strong> " . count($procedures) . "</p>";
        echo "<ul>";
        foreach ($procedures as $p) {
            echo "<li><strong>{$p['Name']}</strong> - {$p['Created']}</li>";
        }
        echo "</ul>";
    } else {
        echo "<p style='color: green;'>✅ Nenhuma procedure encontrada</p>";
    }
    
    echo "<h2>3️⃣ Verificando Eventos</h2>";
    
    // Verificar eventos
    $stmt = $pdo->prepare("SHOW EVENTS");
    $stmt->execute();
    $events = $stmt->fetchAll();
    
    if (count($events) > 0) {
        echo "<p><strong>Eventos encontrados:</strong> " . count($events) . "</p>";
        echo "<ul>";
        foreach ($events as $e) {
            echo "<li><strong>{$e['Name']}</strong> - {$e['Interval']}</li>";
        }
        echo "</ul>";
    } else {
        echo "<p style='color: green;'>✅ Nenhum evento encontrado</p>";
    }
    
    echo "<h2>4️⃣ Verificando Constraints e Validações</h2>";
    
    // Verificar constraints
    $stmt = $pdo->prepare("
        SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, COLUMN_NAME
        FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
        WHERE TABLE_SCHEMA = ? AND TABLE_NAME = 'viagens'
    ");
    $stmt->execute([$dbname]);
    $constraints = $stmt->fetchAll();
    
    if (count($constraints) > 0) {
        echo "<p><strong>Constraints encontradas:</strong></p>";
        echo "<ul>";
        foreach ($constraints as $c) {
            echo "<li><strong>{$c['CONSTRAINT_NAME']}</strong> - {$c['CONSTRAINT_TYPE']} - {$c['COLUMN_NAME']}</li>";
        }
        echo "</ul>";
    } else {
        echo "<p style='color: green;'>✅ Nenhuma constraint encontrada</p>";
    }
    
    echo "<h2>5️⃣ Teste de Atualização Direta</h2>";
    
    // Testar atualização direta sem preparar statement
    echo "<p><strong>Testando atualização direta...</strong></p>";
    
    try {
        // Atualizar viagem #1 diretamente
        $result = $pdo->exec("UPDATE viagens SET km_gps_final = 52000 WHERE id = 1");
        
        if ($result !== false) {
            echo "<p style='color: green;'>✅ Atualização direta realizada! Linhas afetadas: {$result}</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 direta:</strong> {$resultado['km_gps_final']} metros</p>";
            
            if ($resultado['km_gps_final'] == 52000) {
                echo "<p style='color: green;'>✅ VALOR CORRETO SALVO!</p>";
            } else {
                echo "<p style='color: red;'>❌ VALOR AINDA INCORRETO!</p>";
            }
        } else {
            echo "<p style='color: red;'>❌ Erro na atualização direta</p>";
        }
    } catch (Exception $e) {
        echo "<p style='color: red;'>❌ Erro na atualização direta: " . $e->getMessage() . "</p>";
    }
    
    echo "<h2>6️⃣ Verificando Logs de Erro</h2>";
    
    // Verificar se há logs de erro
    $stmt = $pdo->prepare("SHOW VARIABLES LIKE 'log_error'");
    $stmt->execute();
    $logError = $stmt->fetch();
    
    if ($logError) {
        echo "<p><strong>Log de erro configurado:</strong> {$logError['Value']}</p>";
    } else {
        echo "<p style='color: orange;'>⚠️ Log de erro não configurado</p>";
    }
    
    echo "<h2>7️⃣ Análise do Problema</h2>";
    
    echo "<div style='background: #f8d7da; padding: 15px; border-radius: 5px; border: 1px solid #f5c6cb;'>";
    echo "<h3>🚨 PROBLEMA IDENTIFICADO:</h3>";
    echo "<p><strong>O valor 9999.999999 está sendo aplicado automaticamente!</strong></p>";
    echo "<p>Possíveis causas:</p>";
    echo "<ul>";
    echo "<li>❌ <strong>Trigger AFTER UPDATE</strong> que sobrescreve o valor</li>";
    echo "<li>❌ <strong>Procedure automática</strong> que executa após UPDATE</li>";
    echo "<li>❌ <strong>Valor padrão</strong> na coluna que está sendo aplicado</li>";
    echo "<li>❌ <strong>Validação automática</strong> que rejeita valores normais</li>";
    echo "</ul>";
    echo "</div>";
    
    echo "<h2>8️⃣ Solução Imediata</h2>";
    
    echo "<div style='background: #d1ecf1; padding: 15px; border-radius: 5px; border: 1px solid #bee5eb;'>";
    echo "<h3>🔧 SOLUÇÃO:</h3>";
    echo "<ol>";
    echo "<li><strong>Verificar se há triggers</strong> que estão interferindo</li>";
    echo "<li><strong>Desabilitar temporariamente</strong> qualquer trigger suspeito</li>";
    echo "<li><strong>Verificar se há código PHP</strong> que está executando após UPDATE</li>";
    echo "<li><strong>Testar com valor diferente</strong> (ex: 99999) para ver se é rejeitado</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>";
}
?>
