feat: vehicle/equipment type system, equipment checklist support, and checklist overview redesign

This commit is contained in:
Matthias Hochmeister
2026-03-28 17:27:01 +01:00
parent 692093cc85
commit 6b46e97eb6
25 changed files with 2230 additions and 494 deletions

View File

@@ -0,0 +1,58 @@
import { Router } from 'express';
import ausruestungTypController from '../controllers/ausruestungTyp.controller';
import { authenticate } from '../middleware/auth.middleware';
import { requirePermission } from '../middleware/rbac.middleware';
const router = Router();
// List all equipment types
router.get(
'/',
authenticate,
ausruestungTypController.getAll.bind(ausruestungTypController)
);
// Equipment-specific type management (BEFORE /:id to avoid route conflicts)
router.get(
'/equipment/:ausruestungId',
authenticate,
ausruestungTypController.getTypesForEquipment.bind(ausruestungTypController)
);
router.put(
'/equipment/:ausruestungId',
authenticate,
requirePermission('ausruestung:manage_types'),
ausruestungTypController.setTypesForEquipment.bind(ausruestungTypController)
);
// Get single equipment type
router.get(
'/:id',
authenticate,
ausruestungTypController.getById.bind(ausruestungTypController)
);
// CRUD — permission-protected
router.post(
'/',
authenticate,
requirePermission('ausruestung:manage_types'),
ausruestungTypController.create.bind(ausruestungTypController)
);
router.patch(
'/:id',
authenticate,
requirePermission('ausruestung:manage_types'),
ausruestungTypController.update.bind(ausruestungTypController)
);
router.delete(
'/:id',
authenticate,
requirePermission('ausruestung:manage_types'),
ausruestungTypController.deleteTyp.bind(ausruestungTypController)
);
export default router;

View File

@@ -13,6 +13,14 @@ router.get(
checklistController.getOverdueChecklists.bind(checklistController)
);
// --- Overview ---
router.get(
'/overview',
authenticate,
requirePermission('checklisten:view'),
checklistController.getOverviewItems.bind(checklistController)
);
// --- Vorlagen (Templates) ---
router.get(
'/vorlagen',
@@ -124,6 +132,42 @@ router.get(
checklistController.getDueChecklists.bind(checklistController)
);
// --- Equipment-specific items ---
router.get(
'/equipment/:ausruestungId/vorlagen',
authenticate,
requirePermission('checklisten:view'),
checklistController.getTemplatesForEquipment.bind(checklistController)
);
router.get(
'/equipment/:ausruestungId/items',
authenticate,
requirePermission('checklisten:view'),
checklistController.getEquipmentItems.bind(checklistController)
);
router.post(
'/equipment/:ausruestungId/items',
authenticate,
requirePermission('checklisten:manage_templates'),
checklistController.addEquipmentItem.bind(checklistController)
);
router.patch(
'/equipment/:ausruestungId/items/:itemId',
authenticate,
requirePermission('checklisten:manage_templates'),
checklistController.updateEquipmentItem.bind(checklistController)
);
router.delete(
'/equipment/:ausruestungId/items/:itemId',
authenticate,
requirePermission('checklisten:manage_templates'),
checklistController.deleteEquipmentItem.bind(checklistController)
);
// --- Ausführungen (Executions) ---
router.get(
'/ausfuehrungen',