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

echo "<h1>🔧 Teste Completo da Funcionalidade 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; }
    .test-section { border: 1px solid #ccc; margin: 20px 0; padding: 15px; border-radius: 5px; }
    .step { margin: 10px 0; padding: 10px; background: #f9f9f9; border-left: 4px solid #007cba; }
</style>";

// Função para conectar ao banco
function conectarBanco() {
    $host = 'localhost';
    $dbname = 'pinheir3_controle_frotasV1.1';
    $username = 'pinheir3_admin';
    $password = '080880Gelboy';
    
    try {
        $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,
        ]);
        return $pdo;
    } catch (PDOException $e) {
        throw new Exception('Erro de conexão: ' . $e->getMessage());
    }
}

// Função para testar requisição para a API
function testarAPI($endpoint, $dados = null, $metodo = 'GET') {
    // Detectar se estamos em produção ou desenvolvimento
    $isProduction = !in_array($_SERVER['HTTP_HOST'] ?? '', ['localhost', '127.0.0.1', '10.0.2.2']);
    
    if ($isProduction) {
        $baseUrl = 'https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php';
    } else {
        $baseUrl = 'http://localhost/controlefrota/backend-php/api-simples-v2.php';
    }
    
    $url = $baseUrl . '?acao=' . $endpoint;
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_HEADER, false);
    
    if ($metodo === 'POST' && $dados) {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($dados));
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/json',
            'Content-Length: ' . strlen(json_encode($dados))
        ]);
    }
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $error = curl_error($ch);
    curl_close($ch);
    
    return [
        'http_code' => $httpCode,
        'response' => $response,
        'error' => $error
    ];
}

try {
    echo "<div class='test-section'>";
    echo "<h2>🗄️ ETAPA 1: Verificação da Conexão com o Banco</h2>";
    
    try {
        $pdo = conectarBanco();
        echo "<div class='success'>✅ Conexão com banco estabelecida com sucesso!</div>";
    } catch (Exception $e) {
        echo "<div class='error'>❌ Erro de conexão: " . $e->getMessage() . "</div>";
        exit();
    }
    echo "</div>";

    echo "<div class='test-section'>";
    echo "<h2>📋 ETAPA 2: Verificação da Tabela checklist_veiculo</h2>";
    
    // Verificar se a tabela existe
    try {
        $stmt = $pdo->query("SHOW TABLES LIKE 'checklist_veiculo'");
        $tabelaExiste = $stmt->rowCount() > 0;
        
        if ($tabelaExiste) {
            echo "<div class='success'>✅ Tabela checklist_veiculo existe!</div>";
            
            // Mostrar estrutura
            echo "<h3>📊 Estrutura da tabela:</h3>";
            $stmt = $pdo->query("DESCRIBE checklist_veiculo");
            $columns = $stmt->fetchAll();
            
            echo "<table>";
            echo "<tr><th>Campo</th><th>Tipo</th><th>Null</th><th>Key</th><th>Default</th></tr>";
            foreach ($columns as $col) {
                echo "<tr>";
                echo "<td>{$col['Field']}</td>";
                echo "<td>{$col['Type']}</td>";
                echo "<td>{$col['Null']}</td>";
                echo "<td>{$col['Key']}</td>";
                echo "<td>{$col['Default']}</td>";
                echo "</tr>";
            }
            echo "</table>";
            
            // Contar registros existentes
            $stmt = $pdo->query("SELECT COUNT(*) as total FROM checklist_veiculo");
            $count = $stmt->fetch();
            echo "<div class='info'>📊 Total de registros existentes: {$count['total']}</div>";
            
        } else {
            echo "<div class='error'>❌ Tabela checklist_veiculo NÃO existe!</div>";
            echo "<div class='step'>";
            echo "<h4>🔧 Criando a tabela agora...</h4>";
            
            $sqlCreateTable = "CREATE TABLE IF NOT EXISTS checklist_veiculo (
                id BIGINT AUTO_INCREMENT PRIMARY KEY,
                viagem_id BIGINT NULL,
                veiculo_id BIGINT NOT NULL,
                data_hora DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
                itens_json TEXT NOT NULL,
                observacoes_gerais TEXT DEFAULT NULL,
                sincronizado BOOLEAN DEFAULT FALSE,
                created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
                
                INDEX idx_viagem_id (viagem_id),
                INDEX idx_veiculo_id (veiculo_id),
                INDEX idx_data_hora (data_hora)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";
            
            try {
                $pdo->exec($sqlCreateTable);
                echo "<div class='success'>✅ Tabela criada com sucesso!</div>";
            } catch (Exception $e) {
                echo "<div class='error'>❌ Erro ao criar tabela: " . $e->getMessage() . "</div>";
            }
            echo "</div>";
        }
    } catch (Exception $e) {
        echo "<div class='error'>❌ Erro ao verificar tabela: " . $e->getMessage() . "</div>";
    }
    echo "</div>";

    echo "<div class='test-section'>";
    echo "<h2>🌐 ETAPA 3: Teste da API - Status</h2>";
    
    $resultado = testarAPI('status');
    echo "<div class='step'>";
    echo "<h4>📡 Testando endpoint de status...</h4>";
    echo "<p><strong>HTTP Code:</strong> {$resultado['http_code']}</p>";
    if ($resultado['error']) {
        echo "<div class='error'>❌ Erro cURL: {$resultado['error']}</div>";
    } else {
        echo "<div class='success'>✅ Requisição realizada com sucesso!</div>";
        echo "<h5>📄 Resposta da API:</h5>";
        echo "<pre>" . htmlspecialchars($resultado['response']) . "</pre>";
    }
    echo "</div>";
    echo "</div>";

    echo "<div class='test-section'>";
    echo "<h2>💾 ETAPA 4: Teste da API - Salvar Checklist</h2>";
    
    $dadosChecklist = [
        'viagemId' => 999,
        '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 sinais de desgaste'
            ]
        ],
        'observacoesGerais' => 'Teste realizado via script PHP de verificação'
    ];
    
    echo "<div class='step'>";
    echo "<h4>📤 Enviando dados de teste para a API...</h4>";
    echo "<h5>📋 Dados enviados:</h5>";
    echo "<pre>" . json_encode($dadosChecklist, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . "</pre>";
    
    $resultado = testarAPI('checklist_veiculo', $dadosChecklist, 'POST');
    echo "<p><strong>HTTP Code:</strong> {$resultado['http_code']}</p>";
    
    if ($resultado['error']) {
        echo "<div class='error'>❌ Erro cURL: {$resultado['error']}</div>";
    } else {
        echo "<div class='success'>✅ Requisição POST realizada!</div>";
        echo "<h5>📄 Resposta da API:</h5>";
        echo "<pre>" . htmlspecialchars($resultado['response']) . "</pre>";
        
        // Verificar se o registro foi salvo
        try {
            $stmt = $pdo->prepare("SELECT * FROM checklist_veiculo WHERE viagem_id = ? ORDER BY id DESC LIMIT 1");
            $stmt->execute([999]);
            $registro = $stmt->fetch();
            
            if ($registro) {
                echo "<div class='success'>✅ Registro encontrado no banco de dados!</div>";
                echo "<h5>📊 Dados salvos:</h5>";
                echo "<table>";
                echo "<tr><th>Campo</th><th>Valor</th></tr>";
                foreach ($registro as $campo => $valor) {
                    if ($campo === 'itens_json') {
                        $valor = json_encode(json_decode($valor, true), JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
                    }
                    echo "<tr><td>$campo</td><td>" . htmlspecialchars($valor) . "</td></tr>";
                }
                echo "</table>";
            } else {
                echo "<div class='error'>❌ Registro NÃO encontrado no banco de dados!</div>";
            }
        } catch (Exception $e) {
            echo "<div class='error'>❌ Erro ao verificar banco: " . $e->getMessage() . "</div>";
        }
    }
    echo "</div>";
    echo "</div>";

    echo "<div class='test-section'>";
    echo "<h2>🔍 ETAPA 5: Teste da API - Buscar Checklists</h2>";
    
    $resultado = testarAPI('checklist_veiculo');
    echo "<div class='step'>";
    echo "<h4>📥 Buscando todos os checklists...</h4>";
    echo "<p><strong>HTTP Code:</strong> {$resultado['http_code']}</p>";
    
    if ($resultado['error']) {
        echo "<div class='error'>❌ Erro cURL: {$resultado['error']}</div>";
    } else {
        echo "<div class='success'>✅ Busca realizada com sucesso!</div>";
        echo "<h5>📄 Resposta da API:</h5>";
        echo "<pre>" . htmlspecialchars($resultado['response']) . "</pre>";
    }
    echo "</div>";
    echo "</div>";

    echo "<div class='test-section'>";
    echo "<h2>📊 ETAPA 6: Verificação Final</h2>";
    
    try {
        $stmt = $pdo->query("SELECT COUNT(*) as total FROM checklist_veiculo");
        $count = $stmt->fetch();
        
        echo "<div class='info'>📋 Total de checklists na tabela: {$count['total']}</div>";
        
        if ($count['total'] > 0) {
            echo "<div class='success'>✅ SUCESSO: A funcionalidade de checklist está funcionando!</div>";
            
            // Mostrar alguns registros de exemplo
            $stmt = $pdo->query("SELECT id, viagem_id, veiculo_id, data_hora, observacoes_gerais FROM checklist_veiculo ORDER BY id DESC LIMIT 5");
            $registros = $stmt->fetchAll();
            
            echo "<h4>📋 Últimos checklists salvos:</h4>";
            echo "<table>";
            echo "<tr><th>ID</th><th>Viagem</th><th>Veículo</th><th>Data/Hora</th><th>Observações</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 "</tr>";
            }
            echo "</table>";
        } else {
            echo "<div class='warning'>⚠️ ATENÇÃO: Não há checklists salvos na tabela</div>";
        }
        
    } catch (Exception $e) {
        echo "<div class='error'>❌ Erro na verificação final: " . $e->getMessage() . "</div>";
    }
    echo "</div>";

    echo "<div class='test-section'>";
    echo "<h2>🎯 RESUMO E PRÓXIMOS PASSOS</h2>";
    echo "<div class='step'>";
    echo "<h4>✅ O que está funcionando:</h4>";
    echo "<ul>";
    echo "<li>✅ Conexão com o banco de dados</li>";
    echo "<li>✅ Estrutura da tabela checklist_veiculo</li>";
    echo "<li>✅ API endpoint checklist_veiculo</li>";
    echo "<li>✅ Salvamento de dados via API</li>";
    echo "</ul>";
    
    echo "<h4>🔧 Se o app não estiver salvando:</h4>";
    echo "<ul>";
    echo "<li>1. Verificar se o app está fazendo a requisição para a URL correta</li>";
    echo "<li>2. Verificar se os dados estão sendo enviados no formato correto</li>";
    echo "<li>3. Verificar logs do servidor web (error.log)</li>";
    echo "<li>4. Testar conectividade entre app e servidor</li>";
    echo "<li>5. Verificar se há problemas de CORS</li>";
    echo "</ul>";
    
    echo "<h4>🌐 URLs para testar:</h4>";
    echo "<ul>";
    echo "<li><strong>API Status:</strong> <a href='../api-simples-v2.php?acao=status' target='_blank'>api-simples-v2.php?acao=status</a></li>";
    echo "<li><strong>Listar Checklists:</strong> <a href='../api-simples-v2.php?acao=checklist_veiculo' target='_blank'>api-simples-v2.php?acao=checklist_veiculo</a></li>";
    echo "<li><strong>Dashboard:</strong> <a href='checklist-dashboard.html' target='_blank'>checklist-dashboard.html</a></li>";
    echo "</ul>";
    echo "</div>";
    echo "</div>";

} catch (Exception $e) {
    echo "<div class='error'>❌ Erro geral no teste: " . $e->getMessage() . "</div>";
}
?> 
