<?php
/**
 * CatalogoController - Catálogo público
 * Localização: /app/controllers/CatalogoController.php
 */

class CatalogoController extends Controller
{
    public function index(): void
    {
        $produtoModel   = $this->model('Produto');
        $categoriaModel = $this->model('Categoria');
        $colecaoModel   = $this->model('Colecao');

        $filtros = [
            'categoria'  => $this->input('categoria'),
            'colecao'    => $this->input('colecao'),
            'material'   => $this->input('material'),
            'polarizado' => $this->input('polarizado'),
            'uv'         => $this->input('uv'),
            'cor'        => $this->input('cor'),
            'busca'      => $this->input('busca'),
            'ordem'      => $this->input('ordem', 'recentes'),
        ];

        $page = max(1, (int)$this->input('page', 1));
        $resultado = $produtoModel->filtrar($filtros, $page, ITEMS_PER_PAGE);

        $this->view('public/catalogo', [
            'pageTitle'  => 'Catálogo - OFFICE',
            'produtos'   => $resultado['items'],
            'pagination' => $resultado,
            'categorias' => $categoriaModel->ativas(),
            'colecoes'   => $colecaoModel->ativas(),
            'filtros'    => $filtros,
            'config'     => config_marca(),
        ]);
    }

    public function produto(string $slug): void
    {
        $produtoModel = $this->model('Produto');
        $produto = $produtoModel->porSlug($slug);

        if (!$produto) {
            http_response_code(404);
            $this->view('public/404', ['pageTitle'=>'Não encontrado','config'=>config_marca()]);
            return;
        }

        $relacionados = $produtoModel->relacionados(
            (int)$produto['id'],
            $produto['categoria_id'] ? (int)$produto['categoria_id'] : null,
            4
        );

        $this->view('public/produto', [
            'pageTitle'    => $produto['nome'] . ' - OFFICE',
            'produto'      => $produto,
            'relacionados' => $relacionados,
            'config'       => config_marca(),
        ]);
    }
}
