This repository has been archived on 2026-03-21. You can view files and clone it, but cannot push or open issues or pull requests.
payfrit-biz/api/admin/copyDrinksToBigDeans.cfm
John Mizerek 8acf2f3249 Complete DB column normalization: strip redundant table-name prefixes from all SQL queries
Updated 70 files to match the payfrit_dev schema where columns like
BusinessName→Name, UserFirstName→FirstName, AddressCity→City, etc.
PKs renamed to ID, FKs keep referenced table name (e.g. BusinessID).
SQL aliases preserve original JSON response keys for API compatibility.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 20:03:40 -08:00

141 lines
5.6 KiB
Text

<cfsetting showdebugoutput="false">
<cfsetting enablecfoutputonly="true">
<cfcontent type="application/json; charset=utf-8" reset="true">
<cfheader name="Cache-Control" value="no-store">
<cfscript>
/**
* Copy drinks from In-N-Out (BusinessID 17) to Big Dean's (BusinessID 27)
*/
response = { "OK": false, "ItemsCreated": 0, "CategoryCreated": false };
try {
bigDeansBusinessId = 27;
// First, check if Big Dean's has a Beverages/Drinks category
qExistingCat = queryExecute("
SELECT ID, Name FROM Categories
WHERE BusinessID = :bizId AND (Name LIKE '%Drink%' OR Name LIKE '%Beverage%')
", { bizId: bigDeansBusinessId }, { datasource: "payfrit" });
if (qExistingCat.recordCount > 0) {
drinksCategoryId = qExistingCat.ID;
response["CategoryNote"] = "Using existing category: " & qExistingCat.Name;
} else {
// Create a new Beverages category for Big Dean's
qMaxCat = queryExecute("SELECT COALESCE(MAX(ID), 0) + 1 as nextId FROM Categories", {}, { datasource: "payfrit" });
drinksCategoryId = qMaxCat.nextId;
qMaxSort = queryExecute("
SELECT COALESCE(MAX(SortOrder), 0) + 1 as nextSort FROM Categories WHERE BusinessID = :bizId
", { bizId: bigDeansBusinessId }, { datasource: "payfrit" });
queryExecute("
INSERT INTO Categories (ID, BusinessID, ParentCategoryID, Name, SortOrder, AddedOn)
VALUES (:catId, :bizId, 0, 'Beverages', :sortOrder, NOW())
", {
catId: drinksCategoryId,
bizId: bigDeansBusinessId,
sortOrder: qMaxSort.nextSort
}, { datasource: "payfrit" });
response["CategoryCreated"] = true;
response["CategoryNote"] = "Created new category: Beverages (ID: " & drinksCategoryId & ")";
}
// Drinks to add (from In-N-Out)
drinks = [
{ name: "Fountain Soda", price: 2.10, desc: "Coca-Cola, Diet Coke, Sprite, Fanta Orange, Lemonade" },
{ name: "Bottled Water", price: 1.50, desc: "" },
{ name: "Iced Tea", price: 2.25, desc: "Freshly brewed" },
{ name: "Coffee", price: 1.95, desc: "Hot brewed coffee" },
{ name: "Hot Cocoa", price: 2.25, desc: "" },
{ name: "Milk", price: 1.25, desc: "2% milk" },
{ name: "Orange Juice", price: 2.50, desc: "Fresh squeezed" },
{ name: "Milkshake", price: 4.95, desc: "Chocolate, Vanilla, or Strawberry - made with real ice cream", requiresChild: 1 }
];
itemsCreated = 0;
for (drink in drinks) {
// Check if item already exists
qExists = queryExecute("
SELECT ID FROM Items
WHERE BusinessID = :bizId AND Name = :name AND CategoryID = :catId
", { bizId: bigDeansBusinessId, name: drink.name, catId: drinksCategoryId }, { datasource: "payfrit" });
if (qExists.recordCount == 0) {
// Get next ItemID
qMaxItem = queryExecute("SELECT COALESCE(MAX(ID), 0) + 1 as nextId FROM Items", {}, { datasource: "payfrit" });
newItemId = qMaxItem.nextId;
queryExecute("
INSERT INTO Items (
ID, BusinessID, CategoryID, ParentItemID,
Name, Description, Price, IsActive,
SortOrder, IsCollapsible, RequiresChildSelection,
AddedOn
) VALUES (
:itemId, :bizId, :catId, 0,
:name, :desc, :price, 1,
:sortOrder, 0, :requiresChild,
NOW()
)
", {
itemId: newItemId,
bizId: bigDeansBusinessId,
catId: drinksCategoryId,
name: drink.name,
desc: structKeyExists(drink, "desc") ? drink.desc : "",
price: drink.price,
sortOrder: itemsCreated,
requiresChild: structKeyExists(drink, "requiresChild") ? drink.requiresChild : 0
}, { datasource: "payfrit" });
itemsCreated++;
// If milkshake, add flavor options
if (drink.name == "Milkshake") {
flavors = ["Chocolate", "Vanilla", "Strawberry"];
flavorSort = 0;
for (flavor in flavors) {
qMaxOpt = queryExecute("SELECT COALESCE(MAX(ID), 0) + 1 as nextId FROM Items", {}, { datasource: "payfrit" });
queryExecute("
INSERT INTO Items (
ID, BusinessID, CategoryID, ParentItemID,
Name, Description, Price, IsActive,
SortOrder, IsCollapsible, IsCheckedByDefault,
AddedOn
) VALUES (
:itemId, :bizId, 0, :parentId,
:name, '', 0, 1,
:sortOrder, 0, :isDefault,
NOW()
)
", {
itemId: qMaxOpt.nextId,
bizId: bigDeansBusinessId,
parentId: newItemId,
name: flavor,
sortOrder: flavorSort,
isDefault: (flavor == "Chocolate") ? 1 : 0
}, { datasource: "payfrit" });
flavorSort++;
}
}
}
}
response["OK"] = true;
response["ItemsCreated"] = itemsCreated;
response["CategoryID"] = drinksCategoryId;
} catch (any e) {
response["ERROR"] = "server_error";
response["MESSAGE"] = e.message;
response["DETAIL"] = e.detail;
}
writeOutput(serializeJSON(response));
</cfscript>