false, 'ERROR' => 'missing_params', 'MESSAGE' => 'BusinessID is required']); } if ($scheduledTaskID <= 0) { apiAbort(['OK' => false, 'ERROR' => 'missing_params', 'MESSAGE' => 'ScheduledTaskID is required']); } try { $def = queryOne(" SELECT Title, Details, TaskCategoryID AS CategoryID FROM ScheduledTaskDefinitions WHERE ID = ? AND BusinessID = ? ", [$scheduledTaskID, $businessID]); if (!$def) { apiAbort(['OK' => false, 'ERROR' => 'not_found', 'MESSAGE' => 'Scheduled task not found']); } queryTimed(" INSERT INTO Tasks (BusinessID, CategoryID, TaskTypeID, Title, Details, CreatedOn, ClaimedByUserID) VALUES (?, ?, 0, ?, ?, NOW(), 0) ", [$businessID, $def['CategoryID'], $def['Title'], $def['Details']]); $taskID = (int) lastInsertId(); jsonResponse([ 'OK' => true, 'TASK_ID' => $taskID, 'MESSAGE' => 'Task created from scheduled task (manual trigger)', ]); } catch (Exception $e) { jsonResponse(['OK' => false, 'ERROR' => 'server_error', 'MESSAGE' => $e->getMessage()]); }