<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once __DIR__ . '/../config/config.php';

$pasta = UPLOADS_PATH . '/produtos';
echo "<pre>";

$pdo = new PDO(
    'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8mb4',
    DB_USER, DB_PASS,
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);

$arquivos = scandir($pasta);
$renomeados = 0;
$erros = 0;

foreach ($arquivos as $f) {
    if ($f === '.' || $f === '..') continue;
    if (!preg_match('/\.(jpg|jpeg|png|webp)$/i', $f)) continue;

    // Gera nome limpo: remove espaços, parênteses, mantém só [a-z0-9._-]
    $ext = strtolower(pathinfo($f, PATHINFO_EXTENSION));
    $base = pathinfo($f, PATHINFO_FILENAME);
    $base = strtolower($base);
    $base = preg_replace('/[^a-z0-9]+/', '-', $base);
    $base = trim($base, '-');
    $novoNome = $base . '.' . $ext;

    if ($f === $novoNome) {
        echo "OK (ja limpo): $f\n";
        continue;
    }

    // Garante unicidade caso colida
    $contador = 1;
    $candidato = $novoNome;
    while (file_exists($pasta . '/' . $candidato) && $candidato !== $f) {
        $candidato = $base . '-' . $contador . '.' . $ext;
        $contador++;
    }
    $novoNome = $candidato;

    // Renomeia o arquivo físico
    if (rename($pasta . '/' . $f, $pasta . '/' . $novoNome)) {
        // Atualiza no banco
        $stmt = $pdo->prepare("UPDATE produto_imagens SET arquivo = :novo WHERE arquivo = :antigo");
        $stmt->execute([
            ':novo'   => 'produtos/' . $novoNome,
            ':antigo' => 'produtos/' . $f,
        ]);

        echo "RENOMEADO: '$f' -> '$novoNome' (banco: " . $stmt->rowCount() . " linhas)\n";
        $renomeados++;
    } else {
        echo "ERRO ao renomear: $f\n";
        $erros++;
    }
}

echo "\n=== RESUMO ===\n";
echo "Renomeados: $renomeados\n";
echo "Erros: $erros\n";
echo "</pre>";