Introduce self-serve module with lane management functionality

- Added `selfserve_lane` class to handle self-serve lane operations.
- Implemented commands (START, STOP, RESET) and states (IDLE, IN_WASH, FAULT, etc.) for lane lifecycle.
- Introduced traits for managing lane status, mode, state, caching, and port control.
- Added enums for cohesive type definitions (`selfserve_lane_command`, `selfserve_lane_status`, `selfserve_lane_state`, etc.).
- Configured `/modules/self-serve/lane/status` route to expose lane state and status via API.
- Linked self-serve configuration via `selfserve_c` and `selfserve_enabled_c` for module toggling.
- Integrated lane caching logic with Redis for performance improvements.
- Updated `index.php` to include the self-serve module.
This commit is contained in:
Jeppe Bundgaard
2025-12-08 15:34:40 +01:00
parent d3d3657dfd
commit cc6639e61b
19 changed files with 824 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
<?php
namespace classes;
require_once WD . '/modules/selfserve/selfserve_c.php';
require_once WD . '/modules/selfserve/classes/selfserve_lane.php';
/**
* Actions
*/
use Exception;
use interfaces\universal_module_i;
use modules\selfserve\classes\selfserve_lane;
use modules\selfserve\selfserve_c;
class selfserve implements universal_module_i
{
/**
* The configuration of the module
* @var selfserve_c
*/
public selfserve_c $config;
public function __construct()
{
$this->config = new selfserve_c();
}
public function lane(int $lane_id): selfserve_lane
{
return new selfserve_lane($lane_id);
}
/**
* @inheritDoc
* @throws Exception If the module is not enabled
*/
public function requireModuleEnabled(): void
{
if (!(bool)$this->config->enabled->getVariableValue()) {
throw new Exception('selfserve module is not enabled');
}
}
}