208 lines
5.1 KiB
TypeScript
208 lines
5.1 KiB
TypeScript
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)
|
|
);
|
|
|
|
// --- Overview ---
|
|
router.get(
|
|
'/overview',
|
|
authenticate,
|
|
requirePermission('checklisten:view'),
|
|
checklistController.getOverviewItems.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)
|
|
);
|
|
|
|
// --- 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',
|
|
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;
|