// Show all beacons with their current business/service point assignments q = queryExecute(" SELECT b.ID, b.UUID, b.Name, sp_link.BusinessID AS BusinessID, sp_link.ID AS ServicePointID, biz.Name, sp.Name AS Name FROM Beacons b LEFT JOIN ServicePoints sp_link ON sp_link.BeaconID = b.ID LEFT JOIN Businesses biz ON biz.ID = sp_link.BusinessID LEFT JOIN ServicePoints sp ON sp.ID = sp_link.ID 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.ID, sp.Name AS Name, sp.BusinessID AS BusinessID, b.Name AS Name FROM ServicePoints sp JOIN Businesses b ON b.ID = sp.BusinessID ORDER BY sp.BusinessID, sp.ID ", {}, { 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 }));