<?php
/**
 * ColecaoAdminController - CRUD de coleções
 * Localização: /app/controllers/ColecaoAdminController.php
 */

class ColecaoAdminController extends Controller
{
    public function index(): void
    {
        $this->requireAdmin();
        $items = $this->model('Colecao')->all('ordem','ASC');
        $this->view('admin/colecoes/index', [
            'pageTitle' => 'Coleções',
            'items'     => $items,
        ], 'admin');
    }

    public function salvar(): void
    {
        $this->requireAdmin();
        $this->validateCsrf();

        $id = (int)$this->input('id',0);
        $nome = trim($this->input('nome',''));
        if (!$nome) { $this->setFlash('error','Nome obrigatório'); $this->redirect(admin_url('colecoes')); return; }

        $slug = slugify($this->input('slug','') ?: $nome);
        $base = $slug; $i = 1;
        while (true) {
            $stmt = Database::getInstance()->prepare("SELECT id FROM colecoes WHERE slug = :s AND id <> :i LIMIT 1");
            $stmt->execute([':s'=>$slug,':i'=>$id]);
            if (!$stmt->fetch()) break;
            $slug = $base . '-' . (++$i);
        }

        $dados = [
            'nome'      => $nome,
            'slug'      => $slug,
            'descricao' => trim($this->input('descricao','')) ?: null,
            'ano'       => (int)$this->input('ano',0) ?: null,
            'ordem'     => (int)$this->input('ordem',0),
            'ativo'     => $this->input('ativo') ? 1 : 0,
        ];

        if ($id) $this->model('Colecao')->update($id,$dados);
        else     $this->model('Colecao')->create($dados);

        $this->setFlash('success','Coleção salva');
        $this->redirect(admin_url('colecoes'));
    }

    public function excluir(int $id): void
    {
        $this->requireAdmin();
        $this->model('Colecao')->delete($id);
        $this->redirect(admin_url('colecoes'));
    }
}
