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

echo "<h2>🧪 TESTE MANUAL: Upload de Fotos Checklist</h2>";

try {
    require_once 'config/database.php';
    $pdo = new PDO($dsn, $username, $password, $options);
    
    echo "<h3>1. 📊 Status da Tabela checklist_fotos:</h3>";
    
    // Verificar estrutura
    $stmt = $pdo->query("DESCRIBE checklist_fotos");
    $colunas = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo "<table border='1' style='border-collapse: collapse;'>";
    echo "<tr><th>Campo</th><th>Tipo</th><th>Null</th><th>Key</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 "</tr>";
    }
    echo "</table>";
    
    // Contar fotos existentes
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM checklist_fotos");
    $total = $stmt->fetch()['total'];
    echo "<p><strong>Total de fotos existentes:</strong> $total</p>";
    
    echo "<h3>2. 📋 Checklist ID 123 (Viagem 151):</h3>";
    
    // Verificar se checklist existe
    $stmt = $pdo->prepare("SELECT * FROM checklist_veiculos WHERE id = 123");
    $stmt->execute();
    $checklist = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($checklist) {
        echo "<p>✅ <strong>Checklist existe:</strong></p>";
        echo "<ul>";
        echo "<li>ID: {$checklist['id']}</li>";
        echo "<li>Viagem: {$checklist['viagem_id']}</li>";
        echo "<li>Veículo: {$checklist['veiculo_id']}</li>";
        echo "<li>Tipo: {$checklist['tipo_veiculo']}</li>";
        echo "<li>Data: {$checklist['data_hora']}</li>";
        echo "</ul>";
    } else {
        echo "<p>❌ <strong>Checklist ID 123 não encontrado!</strong></p>";
        exit;
    }
    
    echo "<h3>3. 📁 Verificar Diretório de Upload:</h3>";
    
    $diretorioBase = 'uploads/checklist-fotos';
    $diretorioCompleto = __DIR__ . '/' . $diretorioBase;
    
    echo "<p><strong>Caminho base:</strong> $diretorioBase</p>";
    echo "<p><strong>Caminho completo:</strong> $diretorioCompleto</p>";
    
    if (is_dir($diretorioCompleto)) {
        echo "<p>✅ <strong>Diretório existe</strong></p>";
        
        if (is_writable($diretorioCompleto)) {
            echo "<p>✅ <strong>Diretório tem permissão de escrita</strong></p>";
        } else {
            echo "<p>❌ <strong>Diretório NÃO tem permissão de escrita</strong></p>";
        }
    } else {
        echo "<p>❌ <strong>Diretório não existe - criando...</strong></p>";
        if (mkdir($diretorioCompleto, 0755, true)) {
            echo "<p>✅ <strong>Diretório criado com sucesso</strong></p>";
        } else {
            echo "<p>❌ <strong>Falha ao criar diretório</strong></p>";
        }
    }
    
    echo "<h3>4. 🧪 TESTE DE INSERÇÃO MANUAL:</h3>";
    
    // Dados de teste para foto
    $fotoTeste = [
        'checklist_id' => 123,
        'item_id' => 'teste_manual',
        'nome_arquivo' => 'foto_teste_' . time() . '.jpg',
        'caminho_arquivo' => $diretorioBase . '/2025/01/foto_teste_' . time() . '.jpg',
        'descricao_problema' => 'Foto de teste para debug do sistema de upload',
        'tamanho_arquivo' => 1024,
        'tipo_mime' => 'image/jpeg'
    ];
    
    echo "<p><strong>Dados da foto de teste:</strong></p>";
    echo "<pre>" . print_r($fotoTeste, true) . "</pre>";
    
    // Tentar inserir
    $sqlInsert = "INSERT INTO checklist_fotos 
                  (checklist_id, item_id, nome_arquivo, caminho_arquivo, descricao_problema, tamanho_arquivo, tipo_mime) 
                  VALUES (?, ?, ?, ?, ?, ?, ?)";
    
    $stmt = $pdo->prepare($sqlInsert);
    $sucesso = $stmt->execute([
        $fotoTeste['checklist_id'],
        $fotoTeste['item_id'],
        $fotoTeste['nome_arquivo'],
        $fotoTeste['caminho_arquivo'],
        $fotoTeste['descricao_problema'],
        $fotoTeste['tamanho_arquivo'],
        $fotoTeste['tipo_mime']
    ]);
    
    if ($sucesso) {
        $fotoId = $pdo->lastInsertId();
        echo "<p>✅ <strong>SUCESSO!</strong> Foto inserida com ID: $fotoId</p>";
        
        // Verificar se foi salva
        $stmt = $pdo->prepare("SELECT * FROM checklist_fotos WHERE id = ?");
        $stmt->execute([$fotoId]);
        $fotoSalva = $stmt->fetch(PDO::FETCH_ASSOC);
        
        echo "<p><strong>Dados salvos:</strong></p>";
        echo "<pre>" . print_r($fotoSalva, true) . "</pre>";
        
        // Limpar teste
        $pdo->prepare("DELETE FROM checklist_fotos WHERE id = ?")->execute([$fotoId]);
        echo "<p>🧹 <strong>Registro de teste removido</strong></p>";
        
    } else {
        echo "<p>❌ <strong>FALHA ao inserir foto de teste</strong></p>";
        echo "<p><strong>Erro:</strong> " . implode(', ', $stmt->errorInfo()) . "</p>";
    }
    
    echo "<h3>5. 🔍 TESTE DE PROCESSAMENTO BASE64:</h3>";
    
    // Simular dados de foto do app
    $fotoBase64Teste = [
        'itemId' => 'pneu_dianteiro_esquerdo',
        'descricao' => 'Pneu com desgaste irregular detectado',
        'base64' => base64_encode('DADOS_FAKE_DE_IMAGEM_PARA_TESTE'),
        'tipoMime' => 'image/jpeg'
    ];
    
    echo "<p><strong>Dados simulados do app:</strong></p>";
    echo "<pre>" . print_r($fotoBase64Teste, true) . "</pre>";
    
    // Simular decodificação
    $dadosImagem = base64_decode($fotoBase64Teste['base64']);
    
    if ($dadosImagem !== false) {
        echo "<p>✅ <strong>Base64 decodificado com sucesso</strong> - " . strlen($dadosImagem) . " bytes</p>";
        
        // Simular geração de nome de arquivo
        $extensao = 'jpg';
        $nomeArquivo = '123_' . $fotoBase64Teste['itemId'] . '_' . time() . '_' . uniqid() . '.' . $extensao;
        $diretorioMes = date('Y/m');
        $caminhoCompleto = $diretorioBase . '/' . $diretorioMes . '/' . $nomeArquivo;
        
        echo "<p><strong>Nome de arquivo gerado:</strong> $nomeArquivo</p>";
        echo "<p><strong>Caminho completo:</strong> $caminhoCompleto</p>";
        
        // Verificar se diretório do mês existe
        $diretorioMesCompleto = __DIR__ . '/' . $diretorioBase . '/' . $diretorioMes;
        if (!is_dir($diretorioMesCompleto)) {
            echo "<p>⚠️ <strong>Diretório do mês não existe:</strong> $diretorioMesCompleto</p>";
            echo "<p>🔧 <strong>Tentando criar...</strong></p>";
            
            if (mkdir($diretorioMesCompleto, 0755, true)) {
                echo "<p>✅ <strong>Diretório criado com sucesso</strong></p>";
            } else {
                echo "<p>❌ <strong>Falha ao criar diretório do mês</strong></p>";
            }
        } else {
            echo "<p>✅ <strong>Diretório do mês existe</strong></p>";
        }
        
    } else {
        echo "<p>❌ <strong>Falha ao decodificar Base64</strong></p>";
    }
    
    echo "<h3>6. 🎯 DIAGNÓSTICO FINAL:</h3>";
    
    echo "<div style='background: #f0f0f0; padding: 10px; margin: 10px 0;'>";
    echo "<h4>✅ FUNCIONANDO:</h4>";
    echo "<ul>";
    echo "<li>Tabela checklist_fotos existe e tem estrutura correta</li>";
    echo "<li>Inserção manual de fotos funciona</li>";
    echo "<li>Diretório de upload existe e tem permissões</li>";
    echo "<li>Decodificação Base64 funciona</li>";
    echo "<li>Geração de nomes de arquivo funciona</li>";
    echo "</ul>";
    echo "</div>";
    
    echo "<div style='background: #ffe0e0; padding: 10px; margin: 10px 0;'>";
    echo "<h4>❌ POSSÍVEIS PROBLEMAS:</h4>";
    echo "<ul>";
    echo "<li><strong>App não envia fotos:</strong> Array 'fotos' pode estar vazio no JSON</li>";
    echo "<li><strong>API não processa:</strong> Função processarFotos() não está sendo chamada</li>";
    echo "<li><strong>Erro silencioso:</strong> Exception não está sendo logada</li>";
    echo "<li><strong>Foreign key:</strong> checklist_id pode não existir no momento do processamento</li>";
    echo "</ul>";
    echo "</div>";
    
    echo "<div style='background: #e0ffe0; padding: 10px; margin: 10px 0;'>";
    echo "<h4>🔧 PRÓXIMOS PASSOS:</h4>";
    echo "<ul>";
    echo "<li>Verificar logs do app Android durante envio de checklist</li>";
    echo "<li>Adicionar logs específicos na API para fotos</li>";
    echo "<li>Testar POST manual com array de fotos</li>";
    echo "<li>Verificar se função processarFotos() está sendo executada</li>";
    echo "</ul>";
    echo "</div>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'><strong>ERRO:</strong> " . $e->getMessage() . "</p>";
}
?> 
