<?php
include 'config/database.php';

header('Content-Type: text/html; charset=utf-8');
echo "<!DOCTYPE html><html><head><title>DEBUG: Sistema de Fotos - Diagnóstico Completo</title></head><body>";
echo "<h2>🔍 DIAGNÓSTICO COMPLETO: Sistema de Fotos</h2>";

try {
    $pdo = conectarBanco();
    
    // 1. VERIFICAR ESTRUTURA DA TABELA
    echo "<h3>1. 📊 Estrutura da tabela checklist_fotos:</h3>";
    
    $stmt = $pdo->query("DESCRIBE checklist_fotos");
    $colunas = $stmt->fetchAll();
    
    echo "<table border='1' cellpadding='5'>";
    echo "<tr><th>Campo</th><th>Tipo</th><th>Null</th><th>Key</th><th>Default</th></tr>";
    foreach ($colunas as $coluna) {
        echo "<tr>";
        echo "<td>{$coluna['Field']}</td>";
        echo "<td>{$coluna['Type']}</td>";
        echo "<td>{$coluna['Null']}</td>";
        echo "<td>{$coluna['Key']}</td>";
        echo "<td>{$coluna['Default']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // 2. VERIFICAR CONTEÚDO DA TABELA
    echo "<h3>2. 📁 Conteúdo atual da tabela:</h3>";
    
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM checklist_fotos");
    $total = $stmt->fetch()['total'];
    
    echo "<p><strong>Total de fotos:</strong> $total</p>";
    
    if ($total > 0) {
        $stmt = $pdo->query("
            SELECT cf.*, cv.viagem_id, cv.veiculo_id, cv.tipo_veiculo, cv.data_hora
            FROM checklist_fotos cf
            LEFT JOIN checklist_veiculo cv ON cf.checklist_id = cv.id
            ORDER BY cf.data_upload DESC
            LIMIT 10
        ");
        $fotos = $stmt->fetchAll();
        
        echo "<table border='1' cellpadding='5'>";
        echo "<tr><th>ID</th><th>Checklist</th><th>Item ID</th><th>Nome Arquivo</th><th>Descrição</th><th>Tamanho</th><th>Data</th><th>Viagem ID</th></tr>";
        foreach ($fotos as $foto) {
            echo "<tr>";
            echo "<td>{$foto['id']}</td>";
            echo "<td>{$foto['checklist_id']}</td>";
            echo "<td>{$foto['item_id']}</td>";
            echo "<td>{$foto['nome_arquivo']}</td>";
            echo "<td>" . substr($foto['descricao_problema'], 0, 30) . "...</td>";
            echo "<td>{$foto['tamanho_arquivo']} bytes</td>";
            echo "<td>{$foto['data_upload']}</td>";
            echo "<td>{$foto['viagem_id']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<p style='color: red;'>❌ <strong>NENHUMA FOTO ENCONTRADA!</strong></p>";
    }
    
    // 3. VERIFICAR CHECKLISTS RECENTES
    echo "<h3>3. 📋 Checklists recentes (últimos 5):</h3>";
    
    $stmt = $pdo->query("
        SELECT 
            cv.id,
            cv.viagem_id,
            cv.veiculo_id,
            cv.tipo_veiculo,
            cv.data_hora,
            cv.observacoes_gerais,
            COUNT(cf.id) as total_fotos
        FROM checklist_veiculo cv
        LEFT JOIN checklist_fotos cf ON cv.id = cf.checklist_id
        GROUP BY cv.id
        ORDER BY cv.data_hora DESC
        LIMIT 5
    ");
    $checklists = $stmt->fetchAll();
    
    echo "<table border='1' cellpadding='5'>";
    echo "<tr><th>Checklist ID</th><th>Viagem</th><th>Veículo</th><th>Tipo</th><th>Data/Hora</th><th>Fotos</th></tr>";
    foreach ($checklists as $checklist) {
        $statusFoto = $checklist['total_fotos'] > 0 ? "✅ {$checklist['total_fotos']}" : "❌ 0";
        echo "<tr>";
        echo "<td>{$checklist['id']}</td>";
        echo "<td>{$checklist['viagem_id']}</td>";
        echo "<td>{$checklist['veiculo_id']}</td>";
        echo "<td>{$checklist['tipo_veiculo']}</td>";
        echo "<td>{$checklist['data_hora']}</td>";
        echo "<td>$statusFoto</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // 4. ANALISAR API ENDPOINT
    echo "<h3>4. 🔍 Análise do endpoint api-checklist-v3.php:</h3>";
    
    $apiFile = 'api/relatorios/api-checklist-v3.php';
    if (file_exists($apiFile)) {
        $conteudo = file_get_contents($apiFile);
        
        // Verificar funções chaves
        $temProcessarFotos = strpos($conteudo, 'processarFotos') !== false;
        $temBase64Decode = strpos($conteudo, 'base64_decode') !== false;
        $temInserirFoto = strpos($conteudo, 'inserirFoto') !== false;
        $temDiretorioBase = strpos($conteudo, 'uploads/checklist-fotos') !== false;
        
        echo "<p>📊 <strong>Análise do código:</strong></p>";
        echo "<ul>";
        echo "<li>Função processarFotos(): " . ($temProcessarFotos ? "✅ Existe" : "❌ Não encontrada") . "</li>";
        echo "<li>Decodificação Base64: " . ($temBase64Decode ? "✅ Implementada" : "❌ Não implementada") . "</li>";
        echo "<li>Função inserirFoto(): " . ($temInserirFoto ? "✅ Existe" : "❌ Não encontrada") . "</li>";
        echo "<li>Diretório de upload: " . ($temDiretorioBase ? "✅ Configurado" : "❌ Não configurado") . "</li>";
        echo "</ul>";
        
        // Extrair função processarFotos
        if ($temProcessarFotos) {
            preg_match('/function processarFotos.*?(?=function|\?>|$)/s', $conteudo, $matches);
            if (!empty($matches)) {
                echo "<h4>📝 Código da função processarFotos():</h4>";
                echo "<pre style='background: #f5f5f5; padding: 10px; overflow-x: auto;'>";
                echo htmlspecialchars(substr($matches[0], 0, 1000)) . (strlen($matches[0]) > 1000 ? '...' : '');
                echo "</pre>";
            }
        }
        
    } else {
        echo "<p style='color: red;'>❌ Arquivo api-checklist-v3.php não encontrado!</p>";
    }
    
    // 5. VERIFICAR DIRETÓRIO DE UPLOADS
    echo "<h3>5. 📁 Verificar diretório de uploads:</h3>";
    
    $diretorioUploads = 'uploads/checklist-fotos';
    
    echo "<p><strong>Diretório:</strong> $diretorioUploads</p>";
    echo "<ul>";
    echo "<li>Existe: " . (is_dir($diretorioUploads) ? "✅ Sim" : "❌ Não") . "</li>";
    echo "<li>Tem permissão de escrita: " . (is_writable($diretorioUploads) ? "✅ Sim" : "❌ Não") . "</li>";
    echo "<li>Caminho absoluto: " . realpath($diretorioUploads) . "</li>";
    echo "</ul>";
    
    if (is_dir($diretorioUploads)) {
        $arquivos = glob($diretorioUploads . '/*');
        echo "<p><strong>Arquivos no diretório:</strong> " . count($arquivos) . "</p>";
        
        if (count($arquivos) > 0) {
            echo "<p>Últimos 5 arquivos:</p>";
            echo "<ul>";
            $ultimosArquivos = array_slice($arquivos, -5);
            foreach ($ultimosArquivos as $arquivo) {
                $nome = basename($arquivo);
                $tamanho = filesize($arquivo);
                $data = date('Y-m-d H:i:s', filemtime($arquivo));
                echo "<li>$nome ($tamanho bytes) - $data</li>";
            }
            echo "</ul>";
        }
    }
    
    // 6. TESTAR PROCESSAMENTO DE FOTO
    echo "<h3>6. 🧪 Teste de processamento de foto:</h3>";
    
    echo "<div style='background: #e8f5e8; padding: 15px; border-radius: 5px;'>";
    echo "<h4>📤 Simular envio de foto do app:</h4>";
    
    // Simular dados que o app enviaria
    $dadosTeste = [
        'fotos' => [
            [
                'itemId' => 'teste_debug',
                'descricao' => 'Foto de teste para debug do sistema',
                'base64' => base64_encode('DADOS_TESTE_FAKE_IMAGEM'),
                'tipoMime' => 'image/jpeg'
            ]
        ]
    ];
    
    echo "<p><strong>Dados simulados:</strong></p>";
    echo "<pre>" . json_encode($dadosTeste, JSON_PRETTY_PRINT) . "</pre>";
    
    // Verificar se função existe para testar
    if (function_exists('processarFotos')) {
        echo "<p>✅ Função processarFotos disponível para teste</p>";
    } else {
        echo "<p>❌ Função processarFotos não disponível (precisaria incluir o arquivo da API)</p>";
    }
    echo "</div>";
    
    // 7. ANÁLISE FINAL E RECOMENDAÇÕES
    echo "<h3>7. 🎯 Análise Final e Recomendações:</h3>";
    
    echo "<div style='background: #fff3cd; padding: 15px; border-radius: 5px;'>";
    echo "<h4>⚠️ POSSÍVEIS CAUSAS DO PROBLEMA:</h4>";
    echo "<ol>";
    
    if ($total == 0) {
        echo "<li><strong>PRINCIPAL SUSPEITA:</strong> App não está enviando fotos para a API</li>";
        echo "<li><strong>Verificar:</strong> Se app inclui array 'fotos' no JSON do checklist</li>";
        echo "<li><strong>Debug:</strong> Logs no lado Android para ver se Base64 está sendo gerado</li>";
    } else {
        echo "<li><strong>Sistema funcionando:</strong> Fotos estão sendo salvas normalmente</li>";
        echo "<li><strong>Problema pode ser:</strong> App específico ou versão desatualizada</li>";
    }
    
    echo "<li><strong>Logs da API:</strong> Verificar se requests com fotos estão chegando</li>";
    echo "<li><strong>Tamanho do arquivo:</strong> PHP pode estar rejeitando uploads grandes</li>";
    echo "<li><strong>Timeout:</strong> Processamento de Base64 pode estar demorando</li>";
    echo "</ol>";
    echo "</div>";
    
    // 8. PRÓXIMOS PASSOS
    echo "<h3>8. 📋 Próximos passos para resolver:</h3>";
    
    echo "<div style='background: #e8f5e8; padding: 15px; border-radius: 5px;'>";
    echo "<h4>🎯 PLANO DE AÇÃO:</h4>";
    echo "<ol>";
    echo "<li><strong>📱 App Android:</strong> Verificar logs quando salva checklist</li>";
    echo "<li><strong>🌐 API PHP:</strong> Adicionar logs específicos para fotos</li>";
    echo "<li><strong>🧪 Teste manual:</strong> Usar Postman/curl para enviar foto de teste</li>";
    echo "<li><strong>📊 Monitoramento:</strong> Acompanhar próximo checklist com foto</li>";
    echo "<li><strong>🔧 Correção:</strong> Implementar fix baseado nos achados</li>";
    echo "</ol>";
    echo "</div>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro: " . $e->getMessage() . "</p>";
}

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