Files
opencrm/backend/src/routes/contractTask.routes.ts
T
Stefan Hacker e209e9bbca first commit
2026-01-29 01:16:54 +01:00

134 lines
3.1 KiB
TypeScript

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;