feat: add issue kanban/attachments/deadlines, dashboard widget DnD, and checklisten system

This commit is contained in:
Matthias Hochmeister
2026-03-28 15:19:41 +01:00
parent a1cda5be51
commit 0c2ea829aa
42 changed files with 4804 additions and 201 deletions

View File

@@ -0,0 +1,163 @@
import { Router } from 'express';
import checklistController from '../controllers/checklist.controller';
import { authenticate } from '../middleware/auth.middleware';
import { requirePermission } from '../middleware/rbac.middleware';
const router = Router();
// --- Fälligkeiten (before /:id routes) ---
router.get(
'/faellig',
authenticate,
requirePermission('checklisten:view'),
checklistController.getOverdueChecklists.bind(checklistController)
);
// --- Vorlagen (Templates) ---
router.get(
'/vorlagen',
authenticate,
requirePermission('checklisten:view'),
checklistController.getVorlagen.bind(checklistController)
);
router.post(
'/vorlagen',
authenticate,
requirePermission('checklisten:manage_templates'),
checklistController.createVorlage.bind(checklistController)
);
router.get(
'/vorlagen/:id',
authenticate,
requirePermission('checklisten:view'),
checklistController.getVorlageById.bind(checklistController)
);
router.put(
'/vorlagen/:id',
authenticate,
requirePermission('checklisten:manage_templates'),
checklistController.updateVorlage.bind(checklistController)
);
router.delete(
'/vorlagen/:id',
authenticate,
requirePermission('checklisten:manage_templates'),
checklistController.deleteVorlage.bind(checklistController)
);
// --- Vorlage Items ---
router.get(
'/vorlagen/:id/items',
authenticate,
requirePermission('checklisten:view'),
checklistController.getVorlageItems.bind(checklistController)
);
router.post(
'/vorlagen/:id/items',
authenticate,
requirePermission('checklisten:manage_templates'),
checklistController.addVorlageItem.bind(checklistController)
);
// Item-level routes (not nested under vorlage)
router.put(
'/items/:id',
authenticate,
requirePermission('checklisten:manage_templates'),
checklistController.updateVorlageItem.bind(checklistController)
);
router.delete(
'/items/:id',
authenticate,
requirePermission('checklisten:manage_templates'),
checklistController.deleteVorlageItem.bind(checklistController)
);
// --- Vehicle-specific items ---
router.get(
'/fahrzeug/:fahrzeugId/items',
authenticate,
requirePermission('checklisten:view'),
checklistController.getVehicleItems.bind(checklistController)
);
router.post(
'/fahrzeug/:fahrzeugId/items',
authenticate,
requirePermission('checklisten:manage_templates'),
checklistController.addVehicleItem.bind(checklistController)
);
router.put(
'/fahrzeug-items/:id',
authenticate,
requirePermission('checklisten:manage_templates'),
checklistController.updateVehicleItem.bind(checklistController)
);
router.delete(
'/fahrzeug-items/:id',
authenticate,
requirePermission('checklisten:manage_templates'),
checklistController.deleteVehicleItem.bind(checklistController)
);
// --- Applicable checklists for a vehicle ---
router.get(
'/fahrzeug/:fahrzeugId/checklisten',
authenticate,
requirePermission('checklisten:view'),
checklistController.getTemplatesForVehicle.bind(checklistController)
);
// --- Vehicle due dates ---
router.get(
'/fahrzeug/:fahrzeugId/faellig',
authenticate,
requirePermission('checklisten:view'),
checklistController.getDueChecklists.bind(checklistController)
);
// --- Ausführungen (Executions) ---
router.get(
'/ausfuehrungen',
authenticate,
requirePermission('checklisten:view'),
checklistController.getExecutions.bind(checklistController)
);
router.post(
'/ausfuehrungen',
authenticate,
requirePermission('checklisten:execute'),
checklistController.startExecution.bind(checklistController)
);
router.get(
'/ausfuehrungen/:id',
authenticate,
requirePermission('checklisten:view'),
checklistController.getExecutionById.bind(checklistController)
);
router.put(
'/ausfuehrungen/:id',
authenticate,
requirePermission('checklisten:execute'),
checklistController.submitExecution.bind(checklistController)
);
router.post(
'/ausfuehrungen/:id/freigabe',
authenticate,
requirePermission('checklisten:approve'),
checklistController.approveExecution.bind(checklistController)
);
export default router;