import { FastifyInstance } from 'fastify'; import * as orderController from '../controllers/order.controller'; import { authenticate, requireRoles } from '../middlewares/auth.middleware'; export async function orderRoutes(app: FastifyInstance) { // Listagem geral (qualquer autenticado) app.get('/comandas', { preHandler: [authenticate] }, orderController.listOrdersController); // Comandas (Garçom, Caixa, Admin) app.post('/comandas', { preHandler: [requireRoles(['GARCOM', 'CAIXA', 'ADMIN'])] }, orderController.createOrderController); app.post('/comandas/:id/itens', { preHandler: [requireRoles(['GARCOM', 'CAIXA', 'ADMIN'])] }, orderController.addItemToOrderController); app.patch('/comandas/:id', { preHandler: [requireRoles(['GARCOM', 'CAIXA', 'ADMIN'])] }, orderController.updateOrderController); // Pagamento (Caixa, Admin) app.post('/comandas/:id/pagar', { preHandler: [requireRoles(['CAIXA', 'ADMIN'])] }, orderController.payOrderController); // Painel Cozinha / Bar app.get('/painel/itens', { preHandler: [requireRoles(['COZINHA', 'BARMAN', 'ADMIN'])] }, orderController.listKitchenBarController); app.patch('/painel/itens/:id/status', { preHandler: [requireRoles(['COZINHA', 'BARMAN', 'ADMIN'])] }, orderController.updateItemStatusController); // Excluir item de comanda (apenas CAIXA e ADMIN) app.delete('/comandas/itens/:id', { preHandler: [requireRoles(['CAIXA', 'ADMIN'])] }, orderController.deleteItemFromOrderController); }