payfrit-api/api/menu/clearBusinessData.php
John Mizerek 1f81d98c52 Initial PHP API migration from CFML
Complete port of all 163 API endpoints from Lucee/CFML to PHP 8.3.
Shared helpers in api/helpers.php (DB, auth, request/response, security).
PDO prepared statements throughout. Same JSON response shapes as CFML.
2026-03-14 14:26:59 -07:00

61 lines
1.9 KiB
PHP

<?php
require_once __DIR__ . '/../helpers.php';
runAuth();
/**
* Clear menu data for a specific business
*
* POST body: { "BusinessID": 37, "confirm": "DELETE_ALL_DATA" }
*/
$data = readJsonBody();
$businessID = (int) ($data['BusinessID'] ?? 0);
$confirm = $data['confirm'] ?? '';
if ($businessID === 0) {
jsonResponse(['OK' => false, 'ERROR' => 'BusinessID is required']);
}
if ($confirm !== 'DELETE_ALL_DATA') {
jsonResponse(['OK' => false, 'ERROR' => "Must pass confirm: 'DELETE_ALL_DATA' to proceed"]);
}
try {
// Get counts before deletion
$itemCount = queryOne("SELECT COUNT(*) as cnt FROM Items WHERE BusinessID = ?", [$businessID]);
$catCount = queryOne("SELECT COUNT(*) as cnt FROM Categories WHERE BusinessID = ?", [$businessID]);
// Get item IDs for this business to delete template links
$itemRows = queryTimed("SELECT ID FROM Items WHERE BusinessID = ?", [$businessID]);
$itemIds = array_column($itemRows, 'ID');
$deletedLinks = 0;
if (count($itemIds) > 0) {
$placeholders = implode(',', array_fill(0, count($itemIds), '?'));
$params = array_merge($itemIds, $itemIds);
queryTimed(
"DELETE FROM lt_ItemID_TemplateItemID WHERE ItemID IN ($placeholders) OR TemplateItemID IN ($placeholders)",
$params
);
$deletedLinks = count($itemIds);
}
// Delete all items for this business
queryTimed("DELETE FROM Items WHERE BusinessID = ?", [$businessID]);
// Delete all categories for this business
queryTimed("DELETE FROM Categories WHERE BusinessID = ?", [$businessID]);
jsonResponse([
'OK' => true,
'deleted' => [
'items' => (int) $itemCount['cnt'],
'categories' => (int) $catCount['cnt'],
'templateLinks' => $deletedLinks,
],
'businessID' => $businessID,
]);
} catch (Exception $e) {
jsonResponse(['OK' => false, 'ERROR' => $e->getMessage()]);
}