import { Router } from "express"; import { authenticateToken, type AuthenticatedRequest } from "../middleware/auth.middleware"; import { tenantIsolation } from "../middleware/tenant.middleware"; import { executeTaskTransition } from "../services/task-transition.service"; import { parseOfflineTimestamp } from "./task-helpers"; export function registerTaskTransitionRoutes(router: ReturnType): void { router.post('/api/tasks/:id/transition', authenticateToken, tenantIsolation, async (req: AuthenticatedRequest, res) => { try { const taskId = parseInt(req.params.id); const { transitionId, action } = req.body; // action: 'approve' | 'reject' if (isNaN(taskId) || !transitionId) { return res.status(400).json({ success: false, error: 'Неверные параметры' }); } const result = await executeTaskTransition({ taskId, transitionId, action, user: req.user, organizationId: req.organizationId!, offlineEnqueuedAt: parseOfflineTimestamp(req), }); if (!result.success) { return res.status(result.status || 500).json({ success: false, error: result.error, ...(result.fields ? { fields: result.fields } : {}) }); } return res.json({ success: true, message: result.message, task: result.task }); } catch (error) { console.error('Transition route error:', error); return res.status(500).json({ success: false, error: 'Ошибка при выполнении перехода' }); } } ); // Get task field values }