<?php
require_once __DIR__ . '/../bootstrap.php';

use Gestoreasy\Core\Tenant\TenantContext;
use Gestoreasy\Core\Tenant\ConnectionManager;
use Gestoreasy\Core\Tenant\TenantAdmin;
use Gestoreasy\Core\Http\Request;

// Simular uma requisição para configurar o tenant
$_SERVER['HTTP_HOST'] = 'localhost';
$_COOKIE['x-tenant-id'] = 'default';
$req = new Request(['x-tenant-id' => 'default'], [], [], [], 'GET', '/');
TenantContext::bootstrapFromRequest($req);

// Executar migrações para garantir que as tabelas existam
$tenantAdmin = new TenantAdmin();
$tenantAdmin->runMigrations(TenantContext::getTenantId());

$pdo = ConnectionManager::forTenant();

echo "=== VERIFICAÇÃO DE IMAGENS DOS PRODUTOS ===\n\n";

// Verificar produtos 23 e 25
$productIds = [23, 25];

foreach ($productIds as $id) {
    echo "--- PRODUTO ID $id ---\n";
    
    // Verificar se o produto existe
    $stmt = $pdo->prepare('SELECT id, codigo FROM products WHERE id = ?');
    $stmt->execute([$id]);
    $product = $stmt->fetch();
    
    if (!$product) {
        echo "Produto não encontrado!\n\n";
        continue;
    }
    
    echo "Produto: {$product['codigo']}\n";
    
    // Verificar mídias na tabela
    $stmt = $pdo->prepare('SELECT id, position, type, url, filename, mime, size FROM product_media WHERE product_id = ? ORDER BY position ASC, id ASC');
    $stmt->execute([$id]);
    $medias = $stmt->fetchAll();
    
    if (empty($medias)) {
        echo "Nenhuma mídia encontrada na tabela product_media\n";
    } else {
        echo "Mídias encontradas na tabela:\n";
        foreach ($medias as $media) {
            echo "  - ID: {$media['id']}, Pos: {$media['position']}, Tipo: {$media['type']}\n";
            echo "    URL: {$media['url']}\n";
            echo "    Filename: {$media['filename']}\n";
            echo "    MIME: {$media['mime']}, Size: {$media['size']}\n";
            
            // Verificar se o arquivo físico existe
            if ($media['filename']) {
                $filePath = __DIR__ . '/../public/uploads/' . $media['filename'];
                if (file_exists($filePath)) {
                    echo "    ✓ Arquivo físico existe: $filePath\n";
                } else {
                    echo "    ✗ Arquivo físico NÃO existe: $filePath\n";
                }
            }
            
            if ($media['url']) {
                $urlPath = __DIR__ . '/../public' . $media['url'];
                if (file_exists($urlPath)) {
                    echo "    ✓ Arquivo via URL existe: $urlPath\n";
                } else {
                    echo "    ✗ Arquivo via URL NÃO existe: $urlPath\n";
                }
            }
            echo "\n";
        }
    }
    
    // Verificar diretório de uploads do produto
    $uploadDir = __DIR__ . '/../public/uploads/products/' . $id;
    if (is_dir($uploadDir)) {
        echo "Diretório de uploads existe: $uploadDir\n";
        $files = scandir($uploadDir);
        $files = array_filter($files, fn($f) => !in_array($f, ['.', '..']));
        if (empty($files)) {
            echo "Diretório vazio\n";
        } else {
            echo "Arquivos no diretório:\n";
            foreach ($files as $file) {
                echo "  - $file\n";
            }
        }
    } else {
        echo "Diretório de uploads NÃO existe: $uploadDir\n";
    }
    
    echo "\n";
}

echo "=== VERIFICAÇÃO GERAL DE UPLOADS ===\n";
$uploadsDir = __DIR__ . '/../public/uploads/products';
if (is_dir($uploadsDir)) {
    echo "Diretório principal de uploads existe: $uploadsDir\n";
    $productDirs = scandir($uploadsDir);
    $productDirs = array_filter($productDirs, fn($d) => !in_array($d, ['.', '..']) && is_dir($uploadsDir . '/' . $d));
    if (empty($productDirs)) {
        echo "Nenhum diretório de produto encontrado\n";
    } else {
        echo "Diretórios de produtos encontrados:\n";
        foreach ($productDirs as $dir) {
            echo "  - $dir\n";
        }
    }
} else {
    echo "Diretório principal de uploads NÃO existe: $uploadsDir\n";
}