<?php
// Debug específico para fotos do checklist
echo "<h1>🔍 Debug Específico - Processamento de Fotos</h1>";

// Conectar ao banco
$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,
    ]);
    echo "<p style='color: green;'>✅ Conexão com banco OK!</p>";
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro de conexão: " . $e->getMessage() . "</p>";
    exit;
}

echo "<h2>1️⃣ Verificar Tabela checklist_fotos</h2>";

// Verificar se a tabela existe
$stmt = $pdo->query("SHOW TABLES LIKE 'checklist_fotos'");
if ($stmt->rowCount() > 0) {
    echo "<p style='color: green;'>✅ Tabela checklist_fotos existe!</p>";
    
    // Verificar estrutura
    $stmt = $pdo->query("DESCRIBE checklist_fotos");
    $colunas = $stmt->fetchAll();
    
    echo "<h3>📋 Estrutura da tabela:</h3>";
    echo "<table border='1' style='border-collapse: collapse;'>";
    echo "<tr><th>Campo</th><th>Tipo</th><th>Null</th><th>Key</th><th>Default</th><th>Extra</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 "<td>{$coluna['Extra']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // Verificar se tem dados
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM checklist_fotos");
    $total = $stmt->fetch();
    echo "<p><strong>Total de fotos na tabela:</strong> {$total['total']}</p>";
    
} else {
    echo "<p style='color: red;'>❌ Tabela checklist_fotos NÃO existe!</p>";
}

echo "<h2>2️⃣ Verificar Diretório de Uploads</h2>";

$diretorioFotos = 'uploads/checklist-fotos';
if (is_dir($diretorioFotos)) {
    echo "<p style='color: green;'>✅ Diretório $diretorioFotos existe!</p>";
    
    // Verificar permissões
    if (is_writable($diretorioFotos)) {
        echo "<p style='color: green;'>✅ Diretório tem permissão de escrita!</p>";
    } else {
        echo "<p style='color: red;'>❌ Diretório NÃO tem permissão de escrita!</p>";
    }
    
    // Listar arquivos
    $arquivos = glob($diretorioFotos . '/*');
    echo "<p><strong>Arquivos no diretório:</strong> " . count($arquivos) . "</p>";
    
} else {
    echo "<p style='color: red;'>❌ Diretório $diretorioFotos NÃO existe!</p>";
    
    // Tentar criar
    if (mkdir($diretorioFotos, 0755, true)) {
        echo "<p style='color: green;'>✅ Diretório criado com sucesso!</p>";
    } else {
        echo "<p style='color: red;'>❌ Falha ao criar diretório!</p>";
    }
}

echo "<h2>3️⃣ Teste de Processamento de Foto</h2>";

// Simular dados de foto como o app envia
$fotoTeste = [
    'itemId' => 'teste_item',
    'base64' => 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==',
    'tipoMime' => 'image/png',
    'descricao' => 'Foto de teste'
];

echo "<h3>📸 Dados da foto de teste:</h3>";
echo "<pre>" . json_encode($fotoTeste, JSON_PRETTY_PRINT) . "</pre>";

// Testar processamento
try {
    // Extrair dados base64
    $base64Data = $fotoTeste['base64'];
    if (strpos($base64Data, 'data:') === 0) {
        $base64Data = substr($base64Data, strpos($base64Data, ',') + 1);
    }
    
    // Decodificar base64
    $imagemData = base64_decode($base64Data);
    if ($imagemData === false) {
        echo "<p style='color: red;'>❌ Erro: Base64 inválido!</p>";
    } else {
        echo "<p style='color: green;'>✅ Base64 decodificado com sucesso! Tamanho: " . strlen($imagemData) . " bytes</p>";
        
        // Testar salvamento de arquivo
        $nomeArquivo = "teste_foto_" . time() . ".png";
        $caminhoArquivo = $diretorioFotos . '/' . $nomeArquivo;
        
        if (file_put_contents($caminhoArquivo, $imagemData)) {
            echo "<p style='color: green;'>✅ Arquivo salvo com sucesso: $caminhoArquivo</p>";
            
            // Testar inserção no banco (se tabela existe)
            if (isset($colunas)) {
                $sqlFoto = "INSERT INTO checklist_fotos (
                    checklist_id, item_id, nome_arquivo, caminho_arquivo, 
                    descricao_problema, base64_data, tamanho_arquivo, 
                    tipo_mime, enviado_servidor, created_at
                ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
                
                $stmtFoto = $pdo->prepare($sqlFoto);
                $resultado = $stmtFoto->execute([
                    999, // checklist_id de teste
                    $fotoTeste['itemId'],
                    $nomeArquivo,
                    $caminhoArquivo,
                    $fotoTeste['descricao'],
                    $base64Data,
                    strlen($imagemData),
                    $fotoTeste['tipoMime'],
                    1,
                    date('Y-m-d H:i:s')
                ]);
                
                if ($resultado) {
                    $fotoId = $pdo->lastInsertId();
                    echo "<p style='color: green;'>✅ Foto inserida no banco com ID: $fotoId</p>";
                    
                    // Limpar teste
                    $pdo->prepare("DELETE FROM checklist_fotos WHERE id = ?")->execute([$fotoId]);
                    unlink($caminhoArquivo);
                    echo "<p style='color: blue;'>🧹 Teste limpo!</p>";
                } else {
                    $erros = $stmtFoto->errorInfo();
                    echo "<p style='color: red;'>❌ Erro ao inserir no banco: " . json_encode($erros) . "</p>";
                }
            }
        } else {
            echo "<p style='color: red;'>❌ Falha ao salvar arquivo!</p>";
        }
    }
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro no processamento: " . $e->getMessage() . "</p>";
}

echo "<h2>4️⃣ Verificar Últimos Checklists</h2>";

// Verificar últimos checklists
$stmt = $pdo->query("SELECT id, viagem_id, veiculo_id, data_hora FROM checklist_veiculo ORDER BY id DESC LIMIT 3");
$checklists = $stmt->fetchAll();

if ($checklists) {
    echo "<h3>📋 Últimos checklists:</h3>";
    echo "<table border='1' style='border-collapse: collapse;'>";
    echo "<tr><th>ID</th><th>Viagem ID</th><th>Veículo ID</th><th>Data/Hora</th></tr>";
    foreach ($checklists as $checklist) {
        echo "<tr>";
        echo "<td>{$checklist['id']}</td>";
        echo "<td>{$checklist['viagem_id']}</td>";
        echo "<td>{$checklist['veiculo_id']}</td>";
        echo "<td>{$checklist['data_hora']}</td>";
        echo "</tr>";
    }
    echo "</table>";
} else {
    echo "<p>Nenhum checklist encontrado.</p>";
}

echo "<h2>🎯 Diagnóstico Final</h2>";
echo "<p>Debug específico de fotos concluído!</p>";
?>
