<cfsetting showdebugoutput="false">
<cfsetting enablecfoutputonly="true">

<cfcontent type="application/json; charset=utf-8" reset="true">
<cfheader name="Cache-Control" value="no-store">

<cfscript>
function apiAbort(obj) {
  writeOutput(serializeJSON(obj));
  abort;
}

if (!structKeyExists(request, "BusinessID") || !isNumeric(request.BusinessID) || request.BusinessID LTE 0) {
  apiAbort({ OK=false, ERROR="no_business_selected" });
}
</cfscript>

<cfquery name="q" datasource="payfrit">
  SELECT
    sp.ID AS ServicePointID,
    sp.BeaconID,
    sp.BusinessID AS BusinessID,
    sp.AssignedByUserID,
    b.Name AS BeaconName,
    b.UUID,
    sp.Name AS ServicePointName
  FROM ServicePoints sp
  JOIN Beacons b ON b.ID = sp.BeaconID
  WHERE sp.BusinessID = <cfqueryparam cfsqltype="cf_sql_integer" value="#request.BusinessID#">
    AND sp.BeaconID IS NOT NULL
  ORDER BY b.Name, sp.Name
</cfquery>

<cfset assignments = []>
<cfloop query="q">
  <cfset arrayAppend(assignments, {
    "ServicePointID"  = q.ServicePointID,
    "BeaconID"        = q.BeaconID,
    "BusinessID"      = q.BusinessID,
    "BeaconName"      = q.BeaconName,
    "UUID"            = q.UUID,
    "ServicePointName"= q.ServicePointName
  })>
</cfloop>

<cfoutput>#serializeJSON({ OK=true, ERROR="", COUNT=arrayLen(assignments), ASSIGNMENTS=assignments })#</cfoutput>
