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

echo "<h1>🔍 Debug da Sincronização do Checklist</h1>";
echo "<style>
    .success { color: green; font-weight: bold; }
    .error { color: red; font-weight: bold; }
    .info { color: blue; }
    .warning { color: orange; font-weight: bold; }
    table { border-collapse: collapse; width: 100%; margin: 10px 0; }
    th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
    th { background-color: #f2f2f2; }
    pre { background: #f5f5f5; padding: 10px; border-radius: 5px; overflow-x: auto; white-space: pre-wrap; }
    .test-section { border: 1px solid #ccc; margin: 20px 0; padding: 15px; border-radius: 5px; }
</style>";

// Simular exatamente o que o app Android envia
function testarSincronizacaoAPI() {
    echo "<div class='test-section'>";
    echo "<h2>📱 Simulando Requisição do App Android</h2>";
    
    // Dados exatamente como o app envia
    $dadosApp = [
        'viagemId' => 123,
        'veiculoId' => 1,
        'dataHora' => date('Y-m-d H:i:s'),
        'itens' => [
            [
                'id' => 'docs_documentos',
                'nome' => 'DOCUMENTOS',
                'categoria' => 'DOCUMENTOS E CARTÕES',
                'status' => 'OK',
                'observacao' => ''
            ],
            [
                'id' => 'elet_bateria',
                'nome' => 'BATERIA',
                'categoria' => 'SISTEMA ELÉTRICO',
                'status' => 'PROBLEMA',
                'observacao' => 'Bateria com defeito - teste app'
            ],
            [
                'id' => 'interior_bancos',
                'nome' => 'BANCOS',
                'categoria' => 'INTERIOR',
                'status' => 'OK',
                'observacao' => ''
            ]
        ],
        'observacoesGerais' => 'Checklist realizado via app Android - teste de sincronização'
    ];
    
    echo "<h4>📋 Dados que o app está tentando enviar:</h4>";
    echo "<pre>" . json_encode($dadosApp, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . "</pre>";
    
    // URL da API
    $apiUrl = 'https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php?acao=checklist_veiculo';
    
    echo "<h4>🌐 URL da API:</h4>";
    echo "<code>$apiUrl</code>";
    
    // Fazer requisição POST como o app faz
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $apiUrl);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($dadosApp));
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json',
        'Content-Length: ' . strlen(json_encode($dadosApp))
    ]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $error = curl_error($ch);
    curl_close($ch);
    
    echo "<h4>📡 Resultado da Requisição:</h4>";
    echo "<p><strong>HTTP Code:</strong> $httpCode</p>";
    
    if ($error) {
        echo "<div class='error'>❌ Erro cURL: $error</div>";
    } else {
        echo "<div class='success'>✅ Requisição enviada sem erro de rede</div>";
        echo "<h5>📄 Resposta da API:</h5>";
        echo "<pre>" . htmlspecialchars($response) . "</pre>";
        
        // Tentar decodificar JSON da resposta
        $responseJson = json_decode($response, true);
        if ($responseJson) {
            if ($responseJson['sucesso']) {
                echo "<div class='success'>🎉 API retornou SUCESSO!</div>";
            } else {
                echo "<div class='error'>❌ API retornou ERRO: " . ($responseJson['mensagem'] ?? 'Erro desconhecido') . "</div>";
            }
        }
    }
    echo "</div>";
    
    return $httpCode === 200 && !$error;
}

// Verificar tabela depois da requisição
function verificarTabelaAposTeste() {
    echo "<div class='test-section'>";
    echo "<h2>🗄️ Verificação da Tabela Após Teste</h2>";
    
    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,
        ]);
        
        // Contar registros
        $stmt = $pdo->query("SELECT COUNT(*) as total FROM checklist_veiculo");
        $count = $stmt->fetch();
        
        echo "<div class='info'>📊 Total de registros na tabela: {$count['total']}</div>";
        
        if ($count['total'] > 0) {
            echo "<div class='success'>✅ Há registros na tabela!</div>";
            
            // Mostrar últimos registros
            $stmt = $pdo->query("SELECT id, viagem_id, veiculo_id, data_hora, observacoes_gerais, sincronizado FROM checklist_veiculo ORDER BY id DESC LIMIT 5");
            $registros = $stmt->fetchAll();
            
            echo "<h4>📋 Últimos registros:</h4>";
            echo "<table>";
            echo "<tr><th>ID</th><th>Viagem</th><th>Veículo</th><th>Data/Hora</th><th>Observações</th><th>Sincronizado</th></tr>";
            foreach ($registros as $reg) {
                echo "<tr>";
                echo "<td>{$reg['id']}</td>";
                echo "<td>" . ($reg['viagem_id'] ?: 'NULL') . "</td>";
                echo "<td>{$reg['veiculo_id']}</td>";
                echo "<td>{$reg['data_hora']}</td>";
                echo "<td>" . substr($reg['observacoes_gerais'], 0, 50) . "...</td>";
                echo "<td>" . ($reg['sincronizado'] ? 'SIM' : 'NÃO') . "</td>";
                echo "</tr>";
            }
            echo "</table>";
            
            // Verificar último registro em detalhe
            $ultimo = $registros[0];
            echo "<h4>🔍 Detalhes do último registro:</h4>";
            $stmt = $pdo->prepare("SELECT * FROM checklist_veiculo WHERE id = ?");
            $stmt->execute([$ultimo['id']]);
            $detalhe = $stmt->fetch();
            
            echo "<pre>";
            echo "ID: {$detalhe['id']}\n";
            echo "Viagem ID: {$detalhe['viagem_id']}\n";
            echo "Veículo ID: {$detalhe['veiculo_id']}\n";
            echo "Data/Hora: {$detalhe['data_hora']}\n";
            echo "Sincronizado: " . ($detalhe['sincronizado'] ? 'SIM' : 'NÃO') . "\n";
            echo "Observações: {$detalhe['observacoes_gerais']}\n\n";
            echo "Itens JSON:\n";
            $itens = json_decode($detalhe['itens_json'], true);
            echo json_encode($itens, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
            echo "</pre>";
            
        } else {
            echo "<div class='error'>❌ Tabela ainda está vazia - o teste falhou</div>";
        }
        
    } catch (Exception $e) {
        echo "<div class='error'>❌ Erro ao verificar tabela: " . $e->getMessage() . "</div>";
    }
    
    echo "</div>";
}

// Diagnosticar possíveis problemas
function diagnosticarProblemas() {
    echo "<div class='test-section'>";
    echo "<h2>🔍 Diagnóstico de Possíveis Problemas</h2>";
    
    echo "<h4>🌐 Testes de Conectividade:</h4>";
    
    // Teste 1: API Status
    $statusUrl = 'https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php?acao=status';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $statusUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($httpCode === 200) {
        echo "<div class='success'>✅ API Status respondendo (HTTP $httpCode)</div>";
    } else {
        echo "<div class='error'>❌ API Status com problema (HTTP $httpCode)</div>";
    }
    
    // Teste 2: Endpoint específico do checklist
    $checklistUrl = 'https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php?acao=checklist_veiculo';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $checklistUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($httpCode === 200) {
        echo "<div class='success'>✅ Endpoint checklist respondendo (HTTP $httpCode)</div>";
        $json = json_decode($response, true);
        if ($json && $json['sucesso']) {
            echo "<div class='success'>✅ Endpoint retorna JSON válido</div>";
        } else {
            echo "<div class='warning'>⚠️ Endpoint responde mas JSON pode ter problema</div>";
        }
    } else {
        echo "<div class='error'>❌ Endpoint checklist com problema (HTTP $httpCode)</div>";
    }
    
    echo "<h4>🔧 Possíveis Causas do Problema:</h4>";
    echo "<ul>";
    echo "<li><strong>URL do App:</strong> Verificar se o app está configurado para a URL correta</li>";
    echo "<li><strong>Conectividade:</strong> App pode não estar conseguindo acessar o servidor</li>";
    echo "<li><strong>Formato dos Dados:</strong> App pode estar enviando dados em formato diferente do esperado</li>";
    echo "<li><strong>Timeout:</strong> Sincronização pode estar falhando por timeout</li>";
    echo "<li><strong>CORS:</strong> Possível problema de Cross-Origin Resource Sharing</li>";
    echo "</ul>";
    
    echo "</div>";
}

// Executar todos os testes
echo "<p><strong>Este script vai simular exatamente o que o app Android deveria fazer para sincronizar um checklist.</strong></p>";

echo "<hr>";
$apiSuccess = testarSincronizacaoAPI();

echo "<hr>";
verificarTabelaAposTeste();

echo "<hr>";
diagnosticarProblemas();

echo "<div class='test-section'>";
echo "<h2>🎯 Conclusão</h2>";
if ($apiSuccess) {
    echo "<div class='success'>✅ Se este teste funcionou mas o app não está sincronizando, o problema está na configuração do app ou na conectividade do dispositivo.</div>";
    echo "<h4>📱 Próximos passos para o app:</h4>";
    echo "<ul>";
    echo "<li>Verificar URL configurada no app</li>";
    echo "<li>Verificar conectividade do dispositivo</li>";
    echo "<li>Verificar logs do ChecklistSyncService</li>";
    echo "<li>Tentar sincronização manual</li>";
    echo "</ul>";
} else {
    echo "<div class='error'>❌ O problema está na API ou na comunicação com o servidor.</div>";
}
echo "</div>";
?> 
