first commit
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
import { Router } from 'express';
|
||||
import * as contractTaskController from '../controllers/contractTask.controller.js';
|
||||
import { authenticate, requirePermission } from '../middleware/auth.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
// ==================== ALL TASKS (vertragsübergreifend) ====================
|
||||
|
||||
// Alle Aufgaben über alle Verträge (für Dashboard & Task-Liste)
|
||||
router.get(
|
||||
'/tasks',
|
||||
authenticate,
|
||||
requirePermission('contracts:read'),
|
||||
contractTaskController.getAllTasks
|
||||
);
|
||||
|
||||
// Task-Statistik (offene Aufgaben)
|
||||
router.get(
|
||||
'/tasks/stats',
|
||||
authenticate,
|
||||
requirePermission('contracts:read'),
|
||||
contractTaskController.getTaskStats
|
||||
);
|
||||
|
||||
// ==================== TASKS BY CONTRACT ====================
|
||||
|
||||
// Alle Aufgaben eines Vertrags abrufen (auch für Kundenportal, aber nur sichtbare)
|
||||
router.get(
|
||||
'/contracts/:contractId/tasks',
|
||||
authenticate,
|
||||
requirePermission('contracts:read'),
|
||||
contractTaskController.getTasks
|
||||
);
|
||||
|
||||
// Neue Aufgabe erstellen (nur für Mitarbeiter mit contracts:update)
|
||||
router.post(
|
||||
'/contracts/:contractId/tasks',
|
||||
authenticate,
|
||||
requirePermission('contracts:update'),
|
||||
contractTaskController.createTask
|
||||
);
|
||||
|
||||
// Support-Anfrage erstellen (für Kundenportal-Benutzer, nur contracts:read erforderlich)
|
||||
router.post(
|
||||
'/contracts/:contractId/support-ticket',
|
||||
authenticate,
|
||||
requirePermission('contracts:read'),
|
||||
contractTaskController.createSupportTicket
|
||||
);
|
||||
|
||||
// Aufgabe aktualisieren
|
||||
router.put(
|
||||
'/tasks/:taskId',
|
||||
authenticate,
|
||||
requirePermission('contracts:update'),
|
||||
contractTaskController.updateTask
|
||||
);
|
||||
|
||||
// Aufgabe als erledigt markieren
|
||||
router.post(
|
||||
'/tasks/:taskId/complete',
|
||||
authenticate,
|
||||
requirePermission('contracts:update'),
|
||||
contractTaskController.completeTask
|
||||
);
|
||||
|
||||
// Aufgabe wieder öffnen
|
||||
router.post(
|
||||
'/tasks/:taskId/reopen',
|
||||
authenticate,
|
||||
requirePermission('contracts:update'),
|
||||
contractTaskController.reopenTask
|
||||
);
|
||||
|
||||
// Aufgabe löschen
|
||||
router.delete(
|
||||
'/tasks/:taskId',
|
||||
authenticate,
|
||||
requirePermission('contracts:delete'),
|
||||
contractTaskController.deleteTask
|
||||
);
|
||||
|
||||
// ==================== SUBTASKS ====================
|
||||
|
||||
// Neue Unteraufgabe erstellen (Mitarbeiter)
|
||||
router.post(
|
||||
'/tasks/:taskId/subtasks',
|
||||
authenticate,
|
||||
requirePermission('contracts:update'),
|
||||
contractTaskController.createSubtask
|
||||
);
|
||||
|
||||
// Antwort auf eigenes Ticket erstellen (Kundenportal)
|
||||
router.post(
|
||||
'/tasks/:taskId/reply',
|
||||
authenticate,
|
||||
requirePermission('contracts:read'),
|
||||
contractTaskController.createCustomerReply
|
||||
);
|
||||
|
||||
// Unteraufgabe als erledigt markieren
|
||||
router.post(
|
||||
'/subtasks/:subtaskId/complete',
|
||||
authenticate,
|
||||
requirePermission('contracts:update'),
|
||||
contractTaskController.completeSubtask
|
||||
);
|
||||
|
||||
// Unteraufgabe wieder öffnen
|
||||
router.post(
|
||||
'/subtasks/:subtaskId/reopen',
|
||||
authenticate,
|
||||
requirePermission('contracts:update'),
|
||||
contractTaskController.reopenSubtask
|
||||
);
|
||||
|
||||
// Unteraufgabe aktualisieren
|
||||
router.put(
|
||||
'/subtasks/:subtaskId',
|
||||
authenticate,
|
||||
requirePermission('contracts:update'),
|
||||
contractTaskController.updateSubtask
|
||||
);
|
||||
|
||||
// Unteraufgabe löschen
|
||||
router.delete(
|
||||
'/subtasks/:subtaskId',
|
||||
authenticate,
|
||||
requirePermission('contracts:delete'),
|
||||
contractTaskController.deleteSubtask
|
||||
);
|
||||
|
||||
export default router;
|
||||
Reference in New Issue
Block a user