// Show all beacons with their current business/service point assignments q = queryExecute(" SELECT b.ID, b.UUID, b.Name, sp_link.ServicePointBusinessID AS BusinessID, sp_link.ServicePointID, biz.BusinessName, sp.ServicePointName AS Name FROM Beacons b LEFT JOIN ServicePoints sp_link ON sp_link.BeaconID = b.ID LEFT JOIN Businesses biz ON biz.BusinessID = sp_link.ServicePointBusinessID LEFT JOIN ServicePoints sp ON sp.ServicePointID = sp_link.ServicePointID WHERE b.IsActive = 1 ORDER BY b.ID ", {}, { datasource: "payfrit" }); rows = []; for (row in q) { arrayAppend(rows, { "BeaconID": row.ID, "UUID": row.UUID, "Name": row.Name ?: "", "BusinessID": row.BusinessID ?: 0, "Name": row.Name ?: "", "ServicePointID": row.ServicePointID ?: 0, "Name": row.Name ?: "" }); } // Also get service points for reference spQuery = queryExecute(" SELECT sp.ServicePointID AS ID, sp.ServicePointName AS Name, sp.ServicePointBusinessID AS BusinessID, b.BusinessName AS Name FROM ServicePoints sp JOIN Businesses b ON b.BusinessID = sp.ServicePointBusinessID ORDER BY sp.ServicePointBusinessID, sp.ServicePointID ", {}, { datasource: "payfrit" }); servicePoints = []; for (sp in spQuery) { arrayAppend(servicePoints, { "ServicePointID": sp.ID, "Name": sp.Name, "BusinessID": sp.BusinessID, "Name": sp.Name }); } writeOutput(serializeJSON({ "OK": true, "BEACONS": rows, "SERVICE_POINTS": servicePoints }));