// Check for action parameter data = {}; try { rawContent = getHttpRequestData().content; if (len(trim(rawContent))) data = deserializeJSON(rawContent); } catch (any e) {} // Close all open chats action if (structKeyExists(data, "action") && data.action == "closeAllChats") { queryExecute(" UPDATE Tasks SET TaskCompletedOn = NOW() WHERE TaskTypeID = 2 AND TaskCompletedOn IS NULL ", {}, { datasource: "payfrit" }); writeOutput(serializeJSON({ "OK": true, "MESSAGE": "All open chats closed" })); abort; } 0 AND TaskCompletedOn IS NULL THEN 1 ELSE 0 END) as ClaimedNotCompleted, SUM(CASE WHEN TaskClaimedByUserID = 0 OR TaskClaimedByUserID IS NULL THEN 1 ELSE 0 END) as Unclaimed, SUM(CASE WHEN TaskCompletedOn IS NOT NULL THEN 1 ELSE 0 END) as Completed FROM Tasks ", [], { datasource = "payfrit" })> #serializeJSON({ "OK": true, "TASKS": tasks, "STATS": { "Total": qStats.Total, "ClaimedNotCompleted": qStats.ClaimedNotCompleted, "Unclaimed": qStats.Unclaimed, "Completed": qStats.Completed } })# #serializeJSON({ "OK": false, "ERROR": cfcatch.message, "DETAIL": cfcatch.detail })#