payfrit-api/api/orders/checkStatusUpdate.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

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);