false, 'message' => 'Wystąpił nieoczekiwany błąd.']; if ($_SERVER['REQUEST_METHOD'] !== 'POST') { http_response_code(405); $response['message'] = 'Invalid request method.'; echo json_encode($response); exit; } require_once 'WorkflowEngine.php'; if (!isset($_POST['instanceId']) || !isset($_POST['transitionId'])) { http_response_code(400); $response['message'] = 'Błąd: Brak wymaganych parametrów.'; echo json_encode($response); exit; } $instanceId = (int)$_POST['instanceId']; $transitionId = $_POST['transitionId']; $userId = $_SESSION['user_id'] ?? null; $payload = $_POST['payload'] ?? []; if (!$userId) { http_response_code(401); $response['message'] = 'Błąd: Sesja wygasła.'; echo json_encode($response); exit; } try { $engine = new WorkflowEngine(); $success = false; if ($transitionId === 'note') { // Special case: Just add a note, don't change state. $message = $payload['message'] ?? ''; if (!empty($message)) { $success = $engine->addNote($instanceId, $message, $userId); if ($success) { $response['message'] = 'Notatka została dodana.'; } } } else { // Standard transition logic $success = $engine->applyTransition($instanceId, $transitionId, $payload, $userId); if ($success) { $response['message'] = 'Akcja została wykonana pomyślnie.'; } } if ($success) { $response['success'] = true; } } catch (Exception $e) { error_log("Error applying transition: " . $e->getMessage()); http_response_code(500); $response['message'] = 'Wystąpił krytyczny błąd: ' . $e->getMessage(); } echo json_encode($response); exit;