<?php
require_once 'conexao.php';

echo "<h2>🔍 Investigação Profunda do Problema</h2>";

try {
    $pdo = conectarBanco();
    
    $rotaId = 39;
    $clienteId = 82;
    
    // 1. Verificar estrutura da tabela
    echo "<h3>1. Estrutura da Tabela rota_clientes:</h3>";
    $sqlStructure = "DESCRIBE rota_clientes";
    $stmtStructure = $pdo->query($sqlStructure);
    $structure = $stmtStructure->fetchAll(PDO::FETCH_ASSOC);
    
    echo "<table border='1'>";
    echo "<tr><th>Campo</th><th>Tipo</th><th>Null</th><th>Key</th><th>Default</th><th>Extra</th></tr>";
    foreach ($structure as $field) {
        echo "<tr>";
        echo "<td>{$field['Field']}</td>";
        echo "<td>{$field['Type']}</td>";
        echo "<td>{$field['Null']}</td>";
        echo "<td>{$field['Key']}</td>";
        echo "<td>{$field['Default']}</td>";
        echo "<td>{$field['Extra']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // 2. Verificar dados brutos do cliente
    echo "<h3>2. Dados Brutos do Cliente ID $clienteId:</h3>";
    $sqlRaw = "SELECT * FROM rota_clientes WHERE id = ? AND solicitacao_rota_id = ?";
    $stmtRaw = $pdo->prepare($sqlRaw);
    $stmtRaw->execute([$clienteId, $rotaId]);
    $clienteRaw = $stmtRaw->fetch(PDO::FETCH_ASSOC);
    
    if ($clienteRaw) {
        echo "<table border='1'>";
        echo "<tr><th>Campo</th><th>Valor</th><th>Tipo</th><th>Comprimento</th></tr>";
        foreach ($clienteRaw as $campo => $valor) {
            $tipo = gettype($valor);
            $comprimento = is_string($valor) ? strlen($valor) : 'N/A';
            echo "<tr>";
            echo "<td>$campo</td>";
            echo "<td>" . htmlspecialchars($valor) . "</td>";
            echo "<td>$tipo</td>";
            echo "<td>$comprimento</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "❌ Cliente não encontrado<br>";
        return;
    }
    
    // 3. Verificar se o campo status_atendimento existe
    echo "<h3>3. Verificando Campo status_atendimento:</h3>";
    $campos = array_column($structure, 'Field');
    if (in_array('status_atendimento', $campos)) {
        echo "✅ Campo 'status_atendimento' existe na tabela<br>";
        
        // Verificar tipo do campo
        foreach ($structure as $field) {
            if ($field['Field'] === 'status_atendimento') {
                echo "Tipo: {$field['Type']}<br>";
                echo "Null: {$field['Null']}<br>";
                echo "Default: {$field['Default']}<br>";
                break;
            }
        }
    } else {
        echo "❌ Campo 'status_atendimento' NÃO existe na tabela!<br>";
        echo "Campos disponíveis: " . implode(', ', $campos) . "<br>";
    }
    
    // 4. Tentar inserir um valor diretamente
    echo "<h3>4. Teste de Inserção Direta:</h3>";
    
    // Primeiro, verificar se há algum trigger ou constraint
    $sqlTriggers = "SHOW TRIGGERS WHERE `Table` = 'rota_clientes'";
    $stmtTriggers = $pdo->query($sqlTriggers);
    $triggers = $stmtTriggers->fetchAll(PDO::FETCH_ASSOC);
    
    if (empty($triggers)) {
        echo "✅ Nenhum trigger encontrado<br>";
    } else {
        echo "⚠️ Triggers encontrados:<br>";
        foreach ($triggers as $trigger) {
            echo "- {$trigger['Trigger']}: {$trigger['Event']} {$trigger['Timing']}<br>";
        }
    }
    
    // Tentar atualização simples
    echo "<h3>5. Teste de Atualização Simples:</h3>";
    
    $sqlTest = "UPDATE rota_clientes SET status_atendimento = 'chegou' WHERE id = ? AND solicitacao_rota_id = ?";
    $stmtTest = $pdo->prepare($sqlTest);
    $success = $stmtTest->execute([$clienteId, $rotaId]);
    
    echo "Update success: " . ($success ? 'true' : 'false') . "<br>";
    echo "Rows affected: " . $stmtTest->rowCount() . "<br>";
    
    // Verificar resultado
    $stmtRaw->execute([$clienteId, $rotaId]);
    $clienteAposUpdate = $stmtRaw->fetch(PDO::FETCH_ASSOC);
    
    echo "Status após update simples: '{$clienteAposUpdate['status_atendimento']}'<br>";
    
    // 6. Verificar se há problemas de encoding
    echo "<h3>6. Verificação de Encoding:</h3>";
    $sqlEncoding = "SHOW VARIABLES LIKE 'character_set%'";
    $stmtEncoding = $pdo->query($sqlEncoding);
    $encoding = $stmtEncoding->fetchAll(PDO::FETCH_ASSOC);
    
    echo "<table border='1'>";
    echo "<tr><th>Variável</th><th>Valor</th></tr>";
    foreach ($encoding as $var) {
        echo "<tr>";
        echo "<td>{$var['Variable_name']}</td>";
        echo "<td>{$var['Value']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // 7. Verificar se há problemas de conexão
    echo "<h3>7. Verificação de Conexão:</h3>";
    echo "PDO Driver: " . $pdo->getAttribute(PDO::ATTR_DRIVER_NAME) . "<br>";
    echo "PDO Server Version: " . $pdo->getAttribute(PDO::ATTR_SERVER_VERSION) . "<br>";
    echo "PDO Client Version: " . $pdo->getAttribute(PDO::ATTR_CLIENT_VERSION) . "<br>";
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "<br>";
    echo "Stack trace: <pre>" . $e->getTraceAsString() . "</pre>";
}
?>
