<?php
/**
 * Teste específico para sincronização do motorista Thalluan
 * Simula o que o app Android faz ao iniciar
 */

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

// Configuração do banco
$host = 'localhost';
$dbname = 'pinheir3_controle_frotasV1.1';
$username = 'pinheir3_admin';
$password = '080880Gelboy';

echo "<!DOCTYPE html>
<html>
<head>
    <title>🔍 Teste Sincronização - Thalluan</title>
    <style>
        body { font-family: Arial; margin: 20px; }
        .card { border: 1px solid #ddd; padding: 15px; margin: 10px 0; border-radius: 8px; }
        .success { background: #d4edda; color: #155724; }
        .error { background: #f8d7da; color: #721c24; }
        .info { background: #cce7ff; color: #004085; }
        .warning { background: #fff3cd; color: #856404; }
        table { border-collapse: collapse; width: 100%; margin: 10px 0; }
        th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
        th { background: #f8f9fa; }
        .motorista-destaque { font-weight: bold; background: #e7f3ff; }
        pre { background: #f8f9fa; padding: 10px; border-radius: 4px; overflow: auto; }
        .json { max-height: 300px; overflow-y: auto; }
    </style>
</head>
<body>";

echo "<h1>🔍 Teste de Sincronização: Motorista Thalluan</h1>";
echo "<p>Este teste simula exatamente o que o app Android faz ao sincronizar dados do servidor.</p>";

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // 1. Verificar dados do Thalluan no banco
    echo "<div class='card info'>";
    echo "<h3>📋 Dados do Thalluan no Banco</h3>";
    
    $stmt = $pdo->query("SELECT * FROM motoristas WHERE nome LIKE '%Thalluan%' OR nome LIKE '%thalluan%' OR usuario LIKE '%thalluan%' OR matricula LIKE '%1477%'");
    $motoristas = $stmt->fetchAll();
    
    if (empty($motoristas)) {
        echo "<p class='error'>❌ Motorista Thalluan não encontrado no banco!</p>";
        echo "<p>Vou listar todos os motoristas disponíveis:</p>";
        
        $stmt = $pdo->query("SELECT id, nome, usuario, matricula, senha, status FROM motoristas ORDER BY nome");
        $todosmotoristas = $stmt->fetchAll();
        
        echo "<table>";
        echo "<tr><th>ID</th><th>Nome</th><th>Usuário</th><th>Matrícula</th><th>Senha</th><th>Status</th></tr>";
        foreach ($todosmotoristas as $mot) {
            echo "<tr>";
            echo "<td>{$mot['id']}</td>";
            echo "<td>{$mot['nome']}</td>";
            echo "<td>{$mot['usuario']}</td>";
            echo "<td>{$mot['matricula']}</td>";
            echo "<td title='{$mot['senha']}'>" . (strlen($mot['senha']) > 20 ? substr($mot['senha'], 0, 20) . '...' : $mot['senha']) . "</td>";
            echo "<td>{$mot['status']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<p class='success'>✅ Motorista Thalluan encontrado no banco!</p>";
        echo "<table>";
        echo "<tr><th>Campo</th><th>Valor</th></tr>";
        
        $thalluan = $motoristas[0];
        foreach ($thalluan as $campo => $valor) {
            if (!is_numeric($campo)) {
                $classe = ($campo === 'nome' && stripos($valor, 'thalluan') !== false) ? 'motorista-destaque' : '';
                
                // Mostrar senha de forma mais clara
                if ($campo === 'senha') {
                    $tipoSenha = '';
                    if (strlen($valor) > 50 && strpos($valor, '$2') === 0) {
                        $tipoSenha = ' <strong>(HASH BCrypt)</strong>';
                    } elseif (strlen($valor) > 30) {
                        $tipoSenha = ' <strong>(HASH)</strong>';
                    } else {
                        $tipoSenha = ' <strong>(Texto Plano)</strong>';
                    }
                    
                    echo "<tr class='$classe'>";
                    echo "<td><strong>$campo</strong></td>";
                    echo "<td title='$valor'>" . substr($valor, 0, 30) . (strlen($valor) > 30 ? '...' : '') . $tipoSenha . "</td>";
                    echo "</tr>";
                } else {
                    echo "<tr class='$classe'>";
                    echo "<td><strong>$campo</strong></td>";
                    echo "<td>" . ($valor ?: 'NULL') . "</td>";
                    echo "</tr>";
                }
            }
        }
        echo "</table>";
        
        // Informações adicionais para o login
        echo "<div class='success'>";
        echo "<h4>🔑 Informações para Login no App:</h4>";
        echo "<ul>";
        echo "<li><strong>Nome de usuário:</strong> {$thalluan['usuario']}</li>";
        echo "<li><strong>Matrícula:</strong> {$thalluan['matricula']}</li>";
        echo "<li><strong>Tipo da senha:</strong> ";
        
        if (strlen($thalluan['senha']) > 50 && strpos($thalluan['senha'], '$2') === 0) {
            echo "BCrypt Hash - <em>Requer implementação especial no app</em>";
        } elseif (strlen($thalluan['senha']) > 30) {
            echo "Hash genérico - <em>App tentará MD5, SHA1, SHA256</em>";
        } else {
            echo "Texto plano - <em>Deve funcionar normalmente</em>";
        }
        
        echo "</li>";
        echo "<li><strong>Status:</strong> {$thalluan['status']}</li>";
        echo "</ul>";
        echo "</div>";
    }
    echo "</div>";
    
    // 2. Testar endpoint de sincronização como o app faz
    echo "<div class='card info'>";
    echo "<h3>🔄 Teste do Endpoint de Sincronização</h3>";
    
    $baseUrl = "https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php";
    $syncUrl = "$baseUrl/api/sync/dados-completos.php?ultima_sync=1970-01-01 00:00:00&versao_app=1.0.0";
    
    echo "<p><strong>URL do teste:</strong> <code>$syncUrl</code></p>";
    
    // Fazer requisição como o app
    $context = stream_context_create([
        'http' => [
            'method' => 'GET',
            'header' => [
                'User-Agent: ControleFretas-Android-Test',
                'Accept: application/json'
            ],
            'timeout' => 30
        ]
    ]);
    
    echo "<p>📡 Fazendo requisição para o servidor...</p>";
    
    $response = @file_get_contents($syncUrl, false, $context);
    
    if ($response === false) {
        echo "<div class='error'>";
        echo "<h4>❌ Erro na Requisição</h4>";
        echo "<p>Não foi possível conectar ao servidor de sincronização.</p>";
        echo "<p>Possíveis causas:</p>";
        echo "<ul>";
        echo "<li>Servidor fora do ar</li>";
        echo "<li>URL incorreta</li>";
        echo "<li>Problema de rede</li>";
        echo "<li>Endpoint não configurado</li>";
        echo "</ul>";
        echo "</div>";
    } else {
        echo "<div class='success'>";
        echo "<h4>✅ Resposta Recebida do Servidor</h4>";
        
        $data = json_decode($response, true);
        
        if ($data === null) {
            echo "<p>❌ Resposta não é um JSON válido:</p>";
            echo "<pre class='json'>" . htmlspecialchars($response) . "</pre>";
        } else {
            echo "<p>✅ JSON válido recebido</p>";
            
            if (isset($data['success']) && $data['success']) {
                echo "<h5>📊 Estatísticas da Sincronização:</h5>";
                if (isset($data['data']['estatisticas'])) {
                    $stats = $data['data']['estatisticas'];
                    echo "<ul>";
                    echo "<li><strong>Motoristas:</strong> " . ($stats['total_motoristas'] ?? 0) . "</li>";
                    echo "<li><strong>Veículos:</strong> " . ($stats['total_veiculos'] ?? 0) . "</li>";
                    echo "<li><strong>Viagens:</strong> " . ($stats['total_viagens'] ?? 0) . "</li>";
                    echo "<li><strong>Clientes:</strong> " . ($stats['total_clientes'] ?? 0) . "</li>";
                    echo "<li><strong>Timestamp:</strong> " . ($stats['timestamp_sync'] ?? 'N/A') . "</li>";
                    echo "</ul>";
                }
                
                // Verificar se Thalluan está na resposta
                echo "<h5>🔍 Verificando se Thalluan está na sincronização:</h5>";
                
                if (isset($data['data']['dados']['motoristas'])) {
                    $motoristasSync = $data['data']['dados']['motoristas'];
                    $thalluanEncontrado = false;
                    
                    echo "<p>Total de motoristas na sincronização: " . count($motoristasSync) . "</p>";
                    
                    foreach ($motoristasSync as $motorista) {
                        if (stripos($motorista['nome'], 'thalluan') !== false || 
                            stripos($motorista['usuario'], 'thalluan') !== false ||
                            $motorista['matricula'] === '1477') {
                            $thalluanEncontrado = true;
                            echo "<div class='success'>";
                            echo "<h6>✅ Thalluan encontrado na sincronização!</h6>";
                            echo "<table>";
                            foreach ($motorista as $campo => $valor) {
                                echo "<tr>";
                                echo "<td><strong>$campo</strong></td>";
                                echo "<td>" . htmlspecialchars($valor) . "</td>";
                                echo "</tr>";
                            }
                            echo "</table>";
                            echo "</div>";
                            break;
                        }
                    }
                    
                    if (!$thalluanEncontrado) {
                        echo "<div class='warning'>";
                        echo "<h6>⚠️ Thalluan NÃO encontrado na sincronização</h6>";
                        echo "<p>Motoristas retornados pela API:</p>";
                        echo "<table>";
                        echo "<tr><th>Nome</th><th>Usuário</th><th>Matrícula</th><th>Status</th></tr>";
                        foreach ($motoristasSync as $mot) {
                            echo "<tr>";
                            echo "<td>" . htmlspecialchars($mot['nome']) . "</td>";
                            echo "<td>" . htmlspecialchars($mot['usuario']) . "</td>";
                            echo "<td>" . htmlspecialchars($mot['matricula']) . "</td>";
                            echo "<td>" . htmlspecialchars($mot['status']) . "</td>";
                            echo "</tr>";
                        }
                        echo "</table>";
                        echo "</div>";
                    }
                } else {
                    echo "<p class='error'>❌ Nenhum motorista encontrado na resposta da API</p>";
                }
                
            } else {
                echo "<div class='error'>";
                echo "<h4>❌ Erro na API</h4>";
                echo "<p>Mensagem: " . ($data['message'] ?? 'Erro desconhecido') . "</p>";
                echo "</div>";
            }
            
            // Mostrar JSON completo (truncado)
            echo "<h5>📄 Resposta JSON (primeiros 2000 caracteres):</h5>";
            echo "<pre class='json'>" . htmlspecialchars(substr(json_encode($data, JSON_PRETTY_PRINT), 0, 2000)) . "...</pre>";
        }
        echo "</div>";
    }
    echo "</div>";
    
    // 3. Instruções para resolver o problema
    echo "<div class='card warning'>";
    echo "<h3>🔧 Como Resolver o Problema</h3>";
    
    if (empty($motoristas)) {
        echo "<h4>1. Adicionar Thalluan no banco:</h4>";
        echo "<pre>INSERT INTO motoristas (nome, usuario, matricula, senha, status) 
VALUES ('Thalluan Henrique', 'thalluan', '1477', '123456', 'ativo');</pre>";
    } else {
        echo "<h4>1. ✅ Thalluan está no banco</h4>";
        
        if ($response === false) {
            echo "<h4>2. Verificar endpoint de sincronização:</h4>";
            echo "<ul>";
            echo "<li>Verificar se o arquivo <code>api/sync/dados-completos.php</code> existe</li>";
            echo "<li>Testar manualmente: <a href='$syncUrl' target='_blank'>$syncUrl</a></li>";
            echo "<li>Verificar permissões do servidor</li>";
            echo "</ul>";
        } else {
            echo "<h4>2. ✅ Endpoint responde</h4>";
            
            if (isset($thalluanEncontrado) && !$thalluanEncontrado) {
                echo "<h4>3. Verificar status do Thalluan:</h4>";
                echo "<pre>UPDATE motoristas SET status = 'ativo' WHERE nome LIKE '%Thalluan%';</pre>";
            } else {
                echo "<h4>3. ✅ Thalluan está sendo sincronizado</h4>";
                echo "<h4>4. Testar no app:</h4>";
                echo "<ul>";
                echo "<li>Fechar e abrir o app</li>";
                echo "<li>Aguardar sincronização (alguns segundos)</li>";
                echo "<li>Tentar login com:</li>";
                echo "<ul>";
                echo "<li><strong>Usuário:</strong> " . ($thalluan['usuario'] ?? 'thalluan') . "</li>";
                echo "<li><strong>Senha:</strong> " . ($thalluan['senha'] ?? '123456') . "</li>";
                echo "</ul>";
                echo "</ul>";
            }
        }
    }
    
    echo "</div>";
    
} catch (Exception $e) {
    echo "<div class='card error'>";
    echo "<h3>❌ Erro no Teste</h3>";
    echo "<p>Erro: " . $e->getMessage() . "</p>";
    echo "</div>";
}

echo "<div class='card info'>";
echo "<h4>ℹ️ Próximos Passos</h4>";
echo "<ol>";
echo "<li>Execute este teste para verificar se Thalluan está no banco e sendo sincronizado</li>";
echo "<li>Se houver problemas, use as soluções sugeridas acima</li>";
echo "<li>Teste o login no app após garantir que a sincronização está funcionando</li>";
echo "<li>Se ainda não funcionar, force uma sincronização completa no app</li>";
echo "</ol>";
echo "</div>";

echo "</body></html>";
?> 
