<?php
/**
 * PedidoAdminController - Gestão de pedidos
 * Localização: /app/controllers/PedidoAdminController.php
 */

class PedidoAdminController extends Controller
{
    public function index(): void
    {
        $this->requireAdmin();
        $pedidoModel = $this->model('Pedido');
        $filtros = [
            'status' => $this->input('status'),
            'busca'  => $this->input('busca'),
        ];
        $page = max(1, (int)$this->input('page',1));
        $result = $pedidoModel->listarAdmin($filtros, $page, ADMIN_ITEMS_PER_PAGE);

        $this->view('admin/pedidos/index', [
            'pageTitle'  => 'Pedidos',
            'pedidos'    => $result['items'],
            'pagination' => $result,
            'filtros'    => $filtros,
        ], 'admin');
    }

    public function ver(int $id): void
    {
        $this->requireAdmin();
        $pedidoModel = $this->model('Pedido');
        $pedido = $pedidoModel->find($id);
        if (!$pedido) { $this->redirect(admin_url('pedidos')); return; }

        $itens = $pedidoModel->itens($id);

        $this->view('admin/pedidos/ver', [
            'pageTitle' => 'Pedido ' . $pedido['codigo'],
            'pedido'    => $pedido,
            'itens'     => $itens,
        ], 'admin');
    }

    public function atualizarStatus(): void
    {
        $this->requireAdmin();
        $this->validateCsrf();
        $id = (int)$this->input('id');
        $status = $this->input('status');
        $validos = array_keys(status_pedido());
        if (!in_array($status, $validos, true)) {
            $this->setFlash('error','Status inválido');
            $this->back();
            return;
        }
        $this->model('Pedido')->atualizarStatus($id, $status);
        $this->setFlash('success','Status atualizado');
        $this->redirect(admin_url('pedidos/ver/' . $id));
    }
}
