response = { "OK": false, "steps": [] }; try { lazyDaisyID = 37; // The three beacon UUIDs we need beaconUUIDs = [ "626C7565636861726D31000000000001", "1B6295D54F744C58A2D8CD83CA26BDF4", "7777772E6B6B6D636E2E636F6D000001" ]; // Create beacons for (i = 1; i <= arrayLen(beaconUUIDs); i++) { uuid = beaconUUIDs[i]; // Check if beacon exists qB = queryExecute("SELECT ID FROM Beacons WHERE UUID = :uuid", { uuid: uuid }, { datasource: "payfrit" }); if (qB.recordCount == 0) { queryExecute("INSERT INTO Beacons (UUID, BusinessID) VALUES (:uuid, :bizID)", { uuid: uuid, bizID: lazyDaisyID }, { datasource: "payfrit" }); qNew = queryExecute("SELECT LAST_INSERT_ID() as id", {}, { datasource: "payfrit" }); beaconID = qNew.id; response.steps.append("Created beacon " & beaconID & " with UUID: " & uuid); } else { beaconID = qB.ID; response.steps.append("Beacon exists: " & beaconID & " with UUID: " & uuid); } } // Get service point Table 1 qSP = queryExecute(" SELECT ServicePointID AS ID FROM ServicePoints WHERE ServicePointBusinessID = :bizID AND ServicePointName = 'Table 1' ", { bizID: lazyDaisyID }, { datasource: "payfrit" }); if (qSP.recordCount == 0) { queryExecute(" INSERT INTO ServicePoints (ServicePointBusinessID, ServicePointName) VALUES (:bizID, 'Table 1') ", { bizID: lazyDaisyID }, { datasource: "payfrit" }); qSP = queryExecute("SELECT LAST_INSERT_ID() as id", {}, { datasource: "payfrit" }); servicePointID = qSP.id; response.steps.append("Created service point 'Table 1' (ID: " & servicePointID & ")"); } else { servicePointID = qSP.ID; response.steps.append("Found service point 'Table 1' (ID: " & servicePointID & ")"); } // Assign all beacons to the Table 1 service point qBeacons = queryExecute("SELECT ID, UUID FROM Beacons WHERE BusinessID = :bizID", { bizID: lazyDaisyID }, { datasource: "payfrit" }); for (i = 1; i <= qBeacons.recordCount; i++) { beaconID = qBeacons.ID[i]; // Unassign this beacon from any existing service point queryExecute(" UPDATE ServicePoints SET BeaconID = NULL, AssignedByUserID = NULL WHERE BeaconID = :beaconID ", { beaconID: beaconID }, { datasource: "payfrit" }); // Assign beacon to Table 1 service point queryExecute(" UPDATE ServicePoints SET BeaconID = :beaconID, AssignedByUserID = 1 WHERE ServicePointID = :spID AND ServicePointBusinessID = :bizID ", { beaconID: beaconID, bizID: lazyDaisyID, spID: servicePointID }, { datasource: "payfrit" }); response.steps.append("Assigned beacon " & beaconID & " to Table 1"); } // Get final status qFinal = queryExecute(" SELECT sp.ServicePointID AS ServicePointID, sp.BeaconID, sp.ServicePointBusinessID AS BusinessID, b.Name AS BeaconName, b.UUID, sp.ServicePointName AS ServicePointName, biz.BusinessName AS BusinessName FROM ServicePoints sp JOIN Beacons b ON b.ID = sp.BeaconID JOIN Businesses biz ON biz.BusinessID = sp.ServicePointBusinessID WHERE sp.BeaconID IS NOT NULL ", {}, { datasource: "payfrit" }); beacons = []; for (i = 1; i <= qFinal.recordCount; i++) { arrayAppend(beacons, { "BeaconID": qFinal.BeaconID[i], "UUID": qFinal.UUID[i], "BusinessID": qFinal.BusinessID[i], "BusinessName": qFinal.BusinessName[i], "ServicePointID": qFinal.ServicePointID[i], "ServicePointName": qFinal.ServicePointName[i] }); } response.OK = true; response.beacons = beacons; } catch (any e) { response.error = e.message; if (len(e.detail)) { response.detail = e.detail; } } writeOutput(serializeJSON(response));