Add bird_flash_calls_client implementation with endpoint builder, request schemas, and validator for managing flash call functionality.

This commit is contained in:
Jeppe Bundgaard
2026-03-26 15:18:55 +01:00
parent a292c8a277
commit fcf9924adc
34 changed files with 3825 additions and 424 deletions
@@ -11,6 +11,7 @@ use classes\stripe;
use modules\selfserve\helpers\selfserve_lane_command;
use modules\selfserve\helpers\selfserve_lane_port;
use modules\selfserve\helpers\selfserve_lane_relay;
use modules\selfserve\helpers\selfserve_wash_session_status;
use objects\departments_o;
use objects\logs_o;
use objects\orders_o;
@@ -220,13 +221,30 @@ class moduleSelfServeRoute
$customer = $build_customer($customer_number);
$vehicle = $build_vehicle($vehicle_id, $session_reg);
$machine_start_triggered_at = $session->machine_start_triggered_at->value() === null ? null : (string)$session->machine_start_triggered_at->value();
$wash_started_at = $session->wash_started_at->value() === null ? null : (string)$session->wash_started_at->value();
if ($wash_started_at === null) {
$wash_started_at = $machine_start_triggered_at;
}
if ($wash_started_at === null) {
$wash_started_at = $format_wash_started_at($selfserve->lane($lane_id)->getWashStartTime());
}
$machine_relay_enabled = (bool)$session->machine_relay_enabled->value();
$included_minutes = $machine_relay_enabled ? $included_minutes_when_machine_enabled : null;
$status = $session->status->value();
$in_progress_statusses = [
selfserve_wash_session_status::MACHINE_RELAY_ENABLED->value,
selfserve_wash_session_status::READY_FOR_MACHINE_START->value,
selfserve_wash_session_status::MACHINE_STARTED->value,
selfserve_wash_session_status::PENDING_QUESTIONS->value,
selfserve_wash_session_status::MACHINE_NOT_ALLOWED->value
];
$in_progress = in_array($status, $in_progress_statusses);
$response->success([
'lane_id' => $lane_id,
'in_progress' => true,
'elapsed_minutes' => 0, // TODO: Start when the session was created.
'status' => (string)$session->status->value(),
'in_progress' => $in_progress,
'elapsed_minutes' => $session->getElapsedMinutes(),
'session' => [
'id' => (int)$session->id,
'status' => (string)$session->status->value(),
@@ -234,13 +252,13 @@ class moduleSelfServeRoute
'customer_number' => $customer_number,
'vehicle_id' => $vehicle_id,
'vehicle_type_id' => $session->vehicle_type_id->value() === null ? null : (int)$session->vehicle_type_id->value(),
'included_minutes' => $included_minutes,
'included_minutes' => $included_minutes ?? 0,
'machine_type_id' => $session->machine_type_id->value() === null ? null : (int)$session->machine_type_id->value(),
'machine_relay_enabled' => $machine_relay_enabled,
'machine_relay_enabled_at' => $session->machine_relay_enabled_at->value() === null ? null : (string)$session->machine_relay_enabled_at->value(),
'machine_start_triggered' => (bool)$session->machine_start_triggered->value(),
'machine_start_triggered_at' => $machine_start_triggered_at,
'wash_started_at' => $machine_start_triggered_at,
'wash_started_at' => $wash_started_at,
'created_at' => (string)$session->created_at->value(),
'updated_at' => $session->updated_at->value() === null ? null : (string)$session->updated_at->value(),
],