Allow customers to open property gates for active washes

This commit is contained in:
Jeppe Bundgaard
2026-06-10 21:00:18 +02:00
parent 574b263a54
commit c0de0e9d6b
2 changed files with 21 additions and 4 deletions
@@ -1670,9 +1670,13 @@ class moduleSelfServeRoute
}
if ($allow_customer_self_serve) {
$customer_allowed = $requires_active_wash
? $this->canCustomerUseActiveOperationalSelfServeLane($lane, $customer_number, $allow_department_active_wash)
: $this->canCustomerUseSelfServeLane($lane, $customer_number);
if ($requires_active_wash && $allow_department_active_wash) {
$customer_allowed = $this->canCustomerUsePropertyGateForLane($lane, $customer_number);
} else {
$customer_allowed = $requires_active_wash
? $this->canCustomerUseActiveOperationalSelfServeLane($lane, $customer_number, false)
: $this->canCustomerUseSelfServeLane($lane, $customer_number);
}
if ($customer_allowed) {
return;
@@ -1827,7 +1831,17 @@ class moduleSelfServeRoute
protected function canCustomerUsePropertyGateForLane(selfserve_lane $lane, int $customer_number): bool
{
return $this->canCustomerUseActiveOperationalSelfServeLane($lane, $customer_number, true);
if ($this->canCustomerUseActiveOperationalSelfServeLane($lane, $customer_number, true)) {
return true;
}
if ($customer_number <= 0 || !$this->isOwnCustomerContext($customer_number)) {
return false;
}
$department_id = $this->departmentIdForLane($lane);
return $department_id > 0
&& $this->customerHasActiveSelfServeWashInDepartment($department_id, $customer_number);
}
protected function canCustomerUseActiveOperationalSelfServeLane(
@@ -295,6 +295,9 @@ it('wires self-serve property gate command permissions', function (): void {
expect($moduleSelfServeRoute)->toContain('modules_selfserve_lane_command_execute_open_property_access_gate');
expect($moduleSelfServeRoute)->toContain('modules_selfserve_lane_command_execute_open_property_exit_gate');
expect($moduleSelfServeRoute)->toContain('Failed to execute self-serve property gate command');
expect($moduleSelfServeRoute)->toContain('$this->canCustomerUsePropertyGateForLane($lane, $customer_number)');
expect($moduleSelfServeRoute)->toContain('$this->isOwnCustomerContext($customer_number)');
expect($moduleSelfServeRoute)->toContain('$this->customerHasActiveSelfServeWashInDepartment($department_id, $customer_number)');
expect($commandTrait)->not->toBeFalse();
expect($commandTrait)->toContain('Failed to open property access gate.');