new features

This commit is contained in:
Matthias Hochmeister
2026-03-23 13:08:19 +01:00
parent 83b84664ce
commit 5032e1593b
41 changed files with 5157 additions and 40 deletions

View File

@@ -0,0 +1,189 @@
import { Router } from 'express';
import bestellungController from '../controllers/bestellung.controller';
import { authenticate } from '../middleware/auth.middleware';
import { requirePermission } from '../middleware/rbac.middleware';
import { uploadBestellung } from '../middleware/upload';
const router = Router();
// ---------------------------------------------------------------------------
// Vendors (Lieferanten)
// ---------------------------------------------------------------------------
router.get(
'/vendors',
authenticate,
requirePermission('bestellungen:view'),
bestellungController.listVendors.bind(bestellungController)
);
router.post(
'/vendors',
authenticate,
requirePermission('bestellungen:manage_vendors'),
bestellungController.createVendor.bind(bestellungController)
);
router.patch(
'/vendors/:id',
authenticate,
requirePermission('bestellungen:manage_vendors'),
bestellungController.updateVendor.bind(bestellungController)
);
router.delete(
'/vendors/:id',
authenticate,
requirePermission('bestellungen:manage_vendors'),
bestellungController.deleteVendor.bind(bestellungController)
);
// ---------------------------------------------------------------------------
// Orders (Bestellungen)
// ---------------------------------------------------------------------------
router.get(
'/',
authenticate,
requirePermission('bestellungen:view'),
bestellungController.listOrders.bind(bestellungController)
);
router.post(
'/',
authenticate,
requirePermission('bestellungen:create'),
bestellungController.createOrder.bind(bestellungController)
);
// Export must come before /:id to avoid param capture
router.get(
'/export/:id',
authenticate,
requirePermission('bestellungen:export'),
bestellungController.exportOrder.bind(bestellungController)
);
router.get(
'/:id',
authenticate,
requirePermission('bestellungen:view'),
bestellungController.getOrder.bind(bestellungController)
);
router.patch(
'/:id',
authenticate,
requirePermission('bestellungen:create'),
bestellungController.updateOrder.bind(bestellungController)
);
router.delete(
'/:id',
authenticate,
requirePermission('bestellungen:delete'),
bestellungController.deleteOrder.bind(bestellungController)
);
router.patch(
'/:id/status',
authenticate,
requirePermission('bestellungen:create'),
bestellungController.updateStatus.bind(bestellungController)
);
// ---------------------------------------------------------------------------
// Line Items (Bestellpositionen)
// ---------------------------------------------------------------------------
router.post(
'/:id/items',
authenticate,
requirePermission('bestellungen:create'),
bestellungController.addLineItem.bind(bestellungController)
);
router.patch(
'/items/:itemId',
authenticate,
requirePermission('bestellungen:create'),
bestellungController.updateLineItem.bind(bestellungController)
);
router.delete(
'/items/:itemId',
authenticate,
requirePermission('bestellungen:delete'),
bestellungController.deleteLineItem.bind(bestellungController)
);
router.patch(
'/items/:itemId/received',
authenticate,
requirePermission('bestellungen:create'),
bestellungController.updateReceivedQuantity.bind(bestellungController)
);
// ---------------------------------------------------------------------------
// Files (Bestellung Dateien)
// ---------------------------------------------------------------------------
router.post(
'/:id/files',
authenticate,
requirePermission('bestellungen:create'),
uploadBestellung.single('datei'),
bestellungController.uploadFile.bind(bestellungController)
);
router.delete(
'/files/:fileId',
authenticate,
requirePermission('bestellungen:delete'),
bestellungController.deleteFile.bind(bestellungController)
);
router.get(
'/:id/files',
authenticate,
requirePermission('bestellungen:view'),
bestellungController.listFiles.bind(bestellungController)
);
// ---------------------------------------------------------------------------
// Reminders (Erinnerungen)
// ---------------------------------------------------------------------------
router.post(
'/:id/reminders',
authenticate,
requirePermission('bestellungen:manage_reminders'),
bestellungController.addReminder.bind(bestellungController)
);
router.patch(
'/reminders/:remId',
authenticate,
requirePermission('bestellungen:manage_reminders'),
bestellungController.markReminderDone.bind(bestellungController)
);
router.delete(
'/reminders/:remId',
authenticate,
requirePermission('bestellungen:manage_reminders'),
bestellungController.deleteReminder.bind(bestellungController)
);
// ---------------------------------------------------------------------------
// History & Export
// ---------------------------------------------------------------------------
router.get(
'/:id/history',
authenticate,
requirePermission('bestellungen:view'),
bestellungController.getHistory.bind(bestellungController)
);
export default router;