// Update beacon mapping via join table. Owner (Beacons.BusinessID) is NOT changed. beaconId = 2; oldBusinessId = 37; // previous mapping newBusinessId = 17; // Remove old mapping queryTimed(" DELETE FROM lt_BeaconsID_BusinessesID WHERE BeaconID = :beaconId AND BusinessID = :oldBizId ", { beaconId: beaconId, oldBizId: oldBusinessId }, { datasource: "payfrit" }); // Add new mapping queryTimed(" INSERT INTO lt_BeaconsID_BusinessesID (BeaconID, BusinessID) VALUES (:beaconId, :newBizId) ON DUPLICATE KEY UPDATE ID = ID ", { beaconId: beaconId, newBizId: newBusinessId }, { datasource: "payfrit" }); // Clear ServicePoints.BeaconID for old business where this beacon was assigned queryTimed(" UPDATE ServicePoints SET BeaconID = NULL, AssignedByUserID = NULL WHERE BeaconID = :beaconId AND BusinessID = :oldBizId ", { beaconId: beaconId, oldBizId: oldBusinessId }, { datasource: "payfrit" }); // Get current state q = queryTimed(" SELECT b.ID AS BeaconID, b.UUID, b.Name AS BeaconName, b.BusinessID AS BeaconBusinessID, sp.ID AS ServicePointID, sp.Name AS ServicePointName, sp.BusinessID AS ServicePointBusinessID, biz.Name AS BusinessName FROM Beacons b LEFT JOIN ServicePoints sp ON sp.BeaconID = b.ID LEFT JOIN Businesses biz ON biz.ID = b.BusinessID WHERE b.IsActive = 1 ORDER BY b.ID ", {}, { datasource: "payfrit" }); rows = []; for (row in q) { arrayAppend(rows, { "BeaconID": row.BeaconID, "UUID": row.UUID, "BeaconName": row.BeaconName, "BeaconBusinessID": row.BeaconBusinessID, "BusinessName": row.BusinessName, "ServicePointID": row.ServicePointID ?: 0, "ServicePointName": row.ServicePointName ?: "" }); } writeOutput(serializeJSON({ "OK": true, "MESSAGE": "Updated beacon #beaconId# to BusinessID #newBusinessId#", "BEACONS": rows }));