Add lane reservation support: implement reservation timer, expiration logic, and new self-serve lane commands (RESERVE and RELEASE); enhance permission checks across routes for global and department-level operations.

This commit is contained in:
Jeppe Bundgaard
2026-01-15 11:22:02 +01:00
parent 90802e9bc7
commit ed7299fc43
12 changed files with 162 additions and 16 deletions
@@ -8,6 +8,7 @@ use classes\response;
use classes\router;
use classes\selfserve;
use classes\stripe;
use modules\selfserve\helpers\selfserve_lane_command;
use objects\departments_o;
use objects\logs_o;
use objects\orders_o;
@@ -69,19 +70,25 @@ class moduleSelfServeRoute
if (self::hasPermission('modules_selfserve_lane_command_bypass_customer_number_validation')) {
$lane->setBypassCustomerNumberValidation(true);
}
$command = \modules\selfserve\helpers\selfserve_lane_command::tryFrom($commandParam);
$command = selfserve_lane_command::tryFrom($commandParam);
if ($command === null) {
$response->error("Invalid command: " . $commandParam);
}
// Require permissions for specific commands
switch ($command) {
case \modules\selfserve\helpers\selfserve_lane_command::START:
case selfserve_lane_command::START:
self::requirePermission('modules_selfserve_lane_command_execute_start');
break;
case \modules\selfserve\helpers\selfserve_lane_command::STOP:
case selfserve_lane_command::STOP:
self::requirePermission('modules_selfserve_lane_command_execute_stop');
break;
case \modules\selfserve\helpers\selfserve_lane_command::RESET:
case selfserve_lane_command::RESERVE:
self::requirePermission('modules_selfserve_lane_command_execute_reserve');
break;
case selfserve_lane_command::RELEASE:
self::requirePermission('modules_selfserve_lane_command_execute_release');
break;
case selfserve_lane_command::RESET:
self::requirePermission('modules_selfserve_lane_command_execute_reset');
break;
}
@@ -111,6 +118,8 @@ class moduleSelfServeRoute
'modules_selfserve_lane_command_execute' => 'Execute self-serve lane command. This is required together with specific command permissions below.',
'modules_selfserve_lane_command_execute_start' => 'Execute self-serve lane START command',
'modules_selfserve_lane_command_execute_stop' => 'Execute self-serve lane STOP command',
'modules_selfserve_lane_command_execute_reserve' => 'Execute self-serve lane RESERVE command',
'modules_selfserve_lane_command_execute_release' => 'Execute self-serve lane RELEASE command (Release the lane reservation and reset its state)',
'modules_selfserve_lane_command_execute_reset' => 'Execute self-serve lane RESET command',
'modules_selfserve_lane_command_bypass_customer_number_validation' => 'Bypass customer number validation when executing commands',
]