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

echo "<h1>🔍 Investigar Estrutura da Coluna km_gps_final</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️⃣ Estrutura da Coluna km_gps_final</h2>";
    
    // Verificar estrutura da coluna
    $stmt = $pdo->prepare("
        SELECT 
            COLUMN_NAME,
            DATA_TYPE,
            IS_NULLABLE,
            COLUMN_DEFAULT,
            EXTRA,
            COLUMN_TYPE,
            CHARACTER_MAXIMUM_LENGTH,
            NUMERIC_PRECISION,
            NUMERIC_SCALE
        FROM INFORMATION_SCHEMA.COLUMNS 
        WHERE TABLE_SCHEMA = ? 
        AND TABLE_NAME = 'viagens' 
        AND COLUMN_NAME = 'km_gps_final'
    ");
    $stmt->execute([$dbname]);
    $coluna = $stmt->fetch();
    
    if ($coluna) {
        echo "<div style='background: #e8f5e8; padding: 15px; border-radius: 5px; border: 1px solid #c3e6cb;'>";
        echo "<h3>📊 Estrutura da Coluna km_gps_final:</h3>";
        echo "<table border='1' style='border-collapse: collapse; margin: 10px 0;'>";
        echo "<tr><th>Propriedade</th><th>Valor</th></tr>";
        echo "<tr><td><strong>Nome</strong></td><td>{$coluna['COLUMN_NAME']}</td></tr>";
        echo "<tr><td><strong>Tipo de Dados</strong></td><td>{$coluna['DATA_TYPE']}</td></tr>";
        echo "<tr><td><strong>Tipo Completo</strong></td><td>{$coluna['COLUMN_TYPE']}</td></tr>";
        echo "<tr><td><strong>Permite NULL</strong></td><td>{$coluna['IS_NULLABLE']}</td></tr>";
        echo "<tr><td><strong>Valor Padrão</strong></td><td>" . ($coluna['COLUMN_DEFAULT'] ?? 'NULL') . "</td></tr>";
        echo "<tr><td><strong>Extra</strong></td><td>{$coluna['EXTRA']}</td></tr>";
        echo "<tr><td><strong>Precisão</strong></td><td>" . ($coluna['NUMERIC_PRECISION'] ?? 'N/A') . "</td></tr>";
        echo "<tr><td><strong>Escala</strong></td><td>" . ($coluna['NUMERIC_SCALE'] ?? 'N/A') . "</td></tr>";
        echo "</table>";
        echo "</div>";
        
        // Verificar se há valor padrão suspeito
        if ($coluna['COLUMN_DEFAULT'] !== null) {
            echo "<div style='background: #fff3cd; padding: 15px; border-radius: 5px; border: 1px solid #ffeaa7;'>";
            echo "<h3>⚠️ VALOR PADRÃO ENCONTRADO:</h3>";
            echo "<p><strong>Valor padrão:</strong> {$coluna['COLUMN_DEFAULT']}</p>";
            echo "<p>Este valor pode estar sendo aplicado automaticamente!</p>";
            echo "</div>";
        }
    } else {
        echo "<p style='color: red;'>❌ Coluna km_gps_final não encontrada!</p>";
    }
    
    echo "<h2>2️⃣ Verificando Constraints da Tabela</h2>";
    
    // Verificar constraints específicas
    $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 "<table border='1' style='border-collapse: collapse; margin: 10px 0;'>";
        echo "<tr><th>Nome</th><th>Tipo</th><th>Coluna</th></tr>";
        foreach ($constraints as $c) {
            echo "<tr>";
            echo "<td>{$c['CONSTRAINT_NAME']}</td>";
            echo "<td>{$c['CONSTRAINT_TYPE']}</td>";
            echo "<td>{$c['COLUMN_NAME']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<p style='color: green;'>✅ Nenhuma constraint encontrada</p>";
    }
    
    echo "<h2>3️⃣ Verificando Check Constraints</h2>";
    
    // Verificar check constraints
    $stmt = $pdo->prepare("
        SELECT 
            CONSTRAINT_NAME,
            CHECK_CLAUSE
        FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS 
        WHERE CONSTRAINT_SCHEMA = ?
    ");
    $stmt->execute([$dbname]);
    $checkConstraints = $stmt->fetchAll();
    
    if (count($checkConstraints) > 0) {
        echo "<p><strong>Check constraints encontradas:</strong></p>";
        echo "<ul>";
        foreach ($checkConstraints as $c) {
            echo "<li><strong>{$c['CONSTRAINT_NAME']}:</strong> {$c['CHECK_CLAUSE']}</li>";
        }
        echo "</ul>";
    } else {
        echo "<p style='color: green;'>✅ Nenhuma check constraint encontrada</p>";
    }
    
    echo "<h2>4️⃣ Teste de Inserção Direta</h2>";
    
    // Testar inserção direta para ver se há validação
    echo "<p><strong>Testando inserção direta...</strong></p>";
    
    try {
        // Tentar inserir uma viagem de teste
        $stmt = $pdo->prepare("
            INSERT INTO viagens (cliente, tecnico_id, veiculo_id, km_inicial, km_final, km_gps_final, data_inicio, data_fim) 
            VALUES (?, ?, ?, ?, ?, ?, NOW(), NOW())
        ");
        $stmt->execute(['TESTE', 1, 1, 1000, 1050, 50000]);
        
        if ($stmt->rowCount() > 0) {
            echo "<p style='color: green;'>✅ Inserção de teste realizada!</p>";
            
            // Verificar se foi inserida corretamente
            $stmt = $pdo->prepare("SELECT id, km_gps_final FROM viagens WHERE cliente = 'TESTE' ORDER BY id DESC LIMIT 1");
            $stmt->execute();
            $resultado = $stmt->execute();
            $viagemTeste = $stmt->fetch();
            
            if ($viagemTeste) {
                echo "<p><strong>Viagem de teste inserida:</strong> ID {$viagemTeste['id']}</p>";
                echo "<p><strong>KM GPS Final:</strong> {$viagemTeste['km_gps_final']} metros</p>";
                
                if ($viagemTeste['km_gps_final'] == 50000) {
                    echo "<p style='color: green;'>✅ VALOR CORRETO INSERIDO!</p>";
                } else {
                    echo "<p style='color: red;'>❌ VALOR ALTERADO AUTOMATICAMENTE!</p>";
                }
                
                // Limpar viagem de teste
                $pdo->exec("DELETE FROM viagens WHERE id = {$viagemTeste['id']}");
                echo "<p style='color: orange;'>🧹 Viagem de teste removida</p>";
            }
        } else {
            echo "<p style='color: red;'>❌ Erro na inserção de teste</p>";
        }
    } catch (Exception $e) {
        echo "<p style='color: red;'>❌ Erro na inserção de teste: " . $e->getMessage() . "</p>";
    }
    
    echo "<h2>5️⃣ Verificando Se Há Outros Triggers Ocultos</h2>";
    
    // Verificar se há triggers em outras tabelas que podem interferir
    $stmt = $pdo->prepare("
        SELECT 
            TRIGGER_NAME,
            EVENT_OBJECT_TABLE,
            EVENT_MANIPULATION,
            ACTION_TIMING,
            ACTION_STATEMENT
        FROM INFORMATION_SCHEMA.TRIGGERS 
        WHERE TRIGGER_SCHEMA = ?
        AND ACTION_STATEMENT LIKE '%viagens%'
    ");
    $stmt->execute([$dbname]);
    $triggersRelacionados = $stmt->fetchAll();
    
    if (count($triggersRelacionados) > 0) {
        echo "<div style='background: #fff3cd; padding: 15px; border-radius: 5px; border: 1px solid #ffeaa7;'>";
        echo "<h3>⚠️ TRIGGERS RELACIONADOS ENCONTRADOS:</h3>";
        echo "<p>Estes triggers podem estar interferindo na tabela viagens:</p>";
        echo "<table border='1' style='border-collapse: collapse; margin: 10px 0;'>";
        echo "<tr><th>Nome</th><th>Tabela</th><th>Evento</th><th>Tempo</th><th>Comando</th></tr>";
        foreach ($triggersRelacionados as $t) {
            echo "<tr>";
            echo "<td>{$t['TRIGGER_NAME']}</td>";
            echo "<td>{$t['EVENT_OBJECT_TABLE']}</td>";
            echo "<td>{$t['EVENT_MANIPULATION']}</td>";
            echo "<td>{$t['ACTION_TIMING']}</td>";
            echo "<td style='max-width: 200px; word-wrap: break-word;'>{$t['ACTION_STATEMENT']}</td>";
            echo "</tr>";
        }
        echo "</table>";
        echo "</div>";
    } else {
        echo "<p style='color: green;'>✅ Nenhum trigger relacionado encontrado</p>";
    }
    
    echo "<h2>6️⃣ Análise Final</h2>";
    
    echo "<div style='background: #f8d7da; padding: 15px; border-radius: 5px; border: 1px solid #f5c6cb;'>";
    echo "<h3>🚨 DIAGNÓSTICO:</h3>";
    echo "<p><strong>O problema está na estrutura da coluna ou em validações ocultas!</strong></p>";
    echo "<p>Possíveis causas:</p>";
    echo "<ul>";
    echo "<li>❌ <strong>Valor padrão</strong> na coluna km_gps_final</li>";
    echo "<li>❌ <strong>Check constraint</strong> que valida valores</li>";
    echo "<li>❌ <strong>Trigger em outra tabela</strong> que monitora viagens</li>";
    echo "<li>❌ <strong>Validação automática</strong> no código PHP</li>";
    echo "</ul>";
    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>";
}
?>
