diff --git a/src/.env.example b/src/.env.example index 2222fc1..b2f5e26 100644 --- a/src/.env.example +++ b/src/.env.example @@ -90,6 +90,8 @@ LAVERIE_BOOKING_PENALTY_AMOUNT=3.00 # Machines LAVERIE_MACHINE_OFFLINE_THRESHOLD_MINUTES=10 +# Désactiver le passage automatique en hors ligne (démo / dev sans matériel) +LAVERIE_MACHINE_OFFLINE_CHECK_ENABLED=false # Paiements LAVERIE_PAYMENT_PROVIDER=stripe diff --git a/src/app/Http/Controllers/Supervisor/MachinePageController.php b/src/app/Http/Controllers/Supervisor/MachinePageController.php index 178514c..bf170de 100644 --- a/src/app/Http/Controllers/Supervisor/MachinePageController.php +++ b/src/app/Http/Controllers/Supervisor/MachinePageController.php @@ -89,6 +89,10 @@ class MachinePageController extends Controller $validated['qr_code'] = $this->resolveQrCode($validated['qr_code'] ?? null); $validated['status'] = $validated['status'] ?? 'available'; + if ($validated['status'] === 'available') { + $validated['last_heartbeat_at'] = now(); + } + $machine = Machine::query()->create($validated); $this->createSimulatedIntegration($machine); @@ -108,6 +112,14 @@ class MachinePageController extends Controller unset($validated['qr_code']); } + if ( + array_key_exists('status', $validated) + && $validated['status'] === 'available' + && $machine->status !== 'available' + ) { + $validated['last_heartbeat_at'] = now(); + } + $machine->update($validated); return redirect()->route('supervisor.machines.index') diff --git a/src/app/Jobs/RefreshOfflineMachines.php b/src/app/Jobs/RefreshOfflineMachines.php index 60736a1..a0acb4b 100644 --- a/src/app/Jobs/RefreshOfflineMachines.php +++ b/src/app/Jobs/RefreshOfflineMachines.php @@ -15,6 +15,10 @@ class RefreshOfflineMachines implements ShouldQueue public function handle(): void { + if (! config('laverie.machine.offline_check_enabled', true)) { + return; + } + $thresholdMinutes = (int) config('laverie.machine.offline_threshold_minutes', 10); $cutoff = now()->subMinutes($thresholdMinutes); diff --git a/src/config/laverie.php b/src/config/laverie.php index 539a665..24e1892 100644 --- a/src/config/laverie.php +++ b/src/config/laverie.php @@ -16,6 +16,10 @@ return [ 'machine' => [ 'offline_threshold_minutes' => (int) env('LAVERIE_MACHINE_OFFLINE_THRESHOLD_MINUTES', 10), + 'offline_check_enabled' => filter_var( + env('LAVERIE_MACHINE_OFFLINE_CHECK_ENABLED', true), + FILTER_VALIDATE_BOOL + ), ], 'payment' => [