<cfsetting showdebugoutput="false">
<cfsetting enablecfoutputonly="true">
<cfcontent type="application/json; charset=utf-8">

<cftry>
  <cfset qAll = queryExecute("
    SELECT ID, ClaimedByUserID, CompletedOn, OrderID,
           CASE WHEN CompletedOn IS NULL THEN 'YES_NULL' ELSE 'NOT_NULL' END AS IsNull
    FROM Tasks
    ORDER BY ID DESC
  ", [], { datasource = "payfrit" })>

  <cfset tasks = []>
  <cfloop query="qAll">
    <cfset arrayAppend(tasks, {
      "TaskID": qAll.ID,
      "ClaimedByUserID": qAll.ClaimedByUserID,
      "OrderID": qAll.OrderID,
      "CompletedOn": len(trim(qAll.CompletedOn)) ? toString(qAll.CompletedOn) : "",
      "IsNull": qAll.IsNull
    })>
  </cfloop>

  <cfoutput>#serializeJSON({
    "OK": true,
    "TASKS": tasks
  })#</cfoutput>

  <cfcatch>
    <cfoutput>#serializeJSON({
      "OK": false,
      "ERROR": cfcatch.message
    })#</cfoutput>
  </cfcatch>
</cftry>
