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.
72 lines
2.2 KiB
PHP
72 lines
2.2 KiB
PHP
<?php
|
|
require_once __DIR__ . '/../helpers.php';
|
|
runAuth();
|
|
|
|
/**
|
|
* Check for order status changes (polling endpoint)
|
|
* POST: { OrderID: int, LastKnownStatusID: int }
|
|
*/
|
|
|
|
$payload = ['OK' => false, 'ERROR' => '', 'HAS_UPDATE' => false, 'ORDER_STATUS' => new stdClass(), 'MESSAGE' => ''];
|
|
|
|
try {
|
|
$data = readJsonBody();
|
|
|
|
if (!isset($data['OrderID'])) {
|
|
$payload['ERROR'] = 'OrderID is required';
|
|
jsonResponse($payload);
|
|
}
|
|
if (!isset($data['LastKnownStatusID'])) {
|
|
$payload['ERROR'] = 'LastKnownStatusID is required';
|
|
jsonResponse($payload);
|
|
}
|
|
|
|
$OrderID = (int) $data['OrderID'];
|
|
$LastKnownStatusID = (int) $data['LastKnownStatusID'];
|
|
|
|
$qOrder = queryOne("
|
|
SELECT ID, StatusID, LastEditedOn, ServicePointID, BusinessID, UserID
|
|
FROM Orders
|
|
WHERE ID = ? AND StatusID != 7
|
|
", [$OrderID]);
|
|
|
|
if (!$qOrder) {
|
|
$payload['ERROR'] = 'Order not found or deleted';
|
|
jsonResponse($payload);
|
|
}
|
|
|
|
$currentStatus = (int) $qOrder['StatusID'];
|
|
$hasUpdate = ($currentStatus !== $LastKnownStatusID);
|
|
|
|
$payload['OK'] = true;
|
|
$payload['HAS_UPDATE'] = $hasUpdate;
|
|
|
|
if ($hasUpdate) {
|
|
$statusMap = [
|
|
0 => ['Cart', 'Your order is in the cart'],
|
|
1 => ['Submitted', 'Your order has been received and is being prepared'],
|
|
2 => ['Preparing', 'Your order is now being prepared'],
|
|
3 => ['Ready', 'Your order is ready for pickup!'],
|
|
4 => ['Completed', 'Thank you! Your order is complete'],
|
|
];
|
|
|
|
$info = $statusMap[$currentStatus] ?? ['Unknown', 'Order status updated'];
|
|
|
|
$payload['ORDER_STATUS'] = [
|
|
'OrderID' => (int) $qOrder['ID'],
|
|
'StatusID' => $currentStatus,
|
|
'StatusName' => $info[0],
|
|
'Message' => $info[1],
|
|
'LastEditedOn' => toISO8601($qOrder['LastEditedOn']),
|
|
];
|
|
$payload['MESSAGE'] = $info[1];
|
|
} else {
|
|
$payload['MESSAGE'] = 'No status update';
|
|
}
|
|
|
|
} catch (Exception $e) {
|
|
$payload['ERROR'] = 'Error checking status: ' . $e->getMessage();
|
|
$payload['OK'] = false;
|
|
}
|
|
|
|
jsonResponse($payload);
|