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;