// Switch beacon mapping from one business to another via join table. // Beacons.BusinessID (owner) is NOT touched. fromBiz = 17; // In-N-Out toBiz = 27; // Big Dean's // Remove mapping for source business queryExecute(" DELETE FROM lt_BeaconsID_BusinessesID WHERE BusinessID = :fromBiz ", { fromBiz: fromBiz }, { datasource: "payfrit" }); // Add mapping for target business (for beacons owned by source) queryExecute(" INSERT INTO lt_BeaconsID_BusinessesID (BeaconID, BusinessID) SELECT ID, :toBiz FROM Beacons WHERE BusinessID = :fromBiz ON DUPLICATE KEY UPDATE ID = ID ", { toBiz: toBiz, fromBiz: fromBiz }, { datasource: "payfrit" }); // Clear ServicePoints.BeaconID for source business (no longer valid) queryExecute(" UPDATE ServicePoints SET BeaconID = NULL, AssignedByUserID = NULL WHERE BusinessID = :fromBiz AND BeaconID IS NOT NULL ", { fromBiz: fromBiz }, { datasource: "payfrit" }); // Get current state q = queryExecute(" SELECT sp.ID AS ServicePointID, sp.BeaconID, sp.BusinessID, b.Name AS BeaconName, biz.Name AS BusinessName, sp.Name AS ServicePointName FROM ServicePoints sp JOIN Beacons b ON b.ID = sp.BeaconID JOIN Businesses biz ON biz.ID = sp.BusinessID WHERE sp.BeaconID IS NOT NULL ", {}, { datasource: "payfrit" }); rows = []; for (row in q) { arrayAppend(rows, { "BeaconID": row.BeaconID, "BeaconName": row.BeaconName, "BusinessID": row.BusinessID, "BusinessName": row.BusinessName, "ServicePointID": row.ServicePointID, "ServicePointName": row.ServicePointName }); } writeOutput(serializeJSON({ "OK": true, "MESSAGE": "Switched beacons from BusinessID #fromBiz# to #toBiz#", "MAPPINGS": rows }));