Compare commits
10
Commits
ee51dc4dba
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a58647a67d | ||
|
|
47bed5a5ab | ||
|
|
bac9b0a1e5 | ||
|
|
9be2aa3468 | ||
|
|
e569c84c9d | ||
|
|
4ff8ff2aac | ||
|
|
80085a94d3 | ||
|
|
c347796c29 | ||
|
|
6dbec68894 | ||
|
|
661b4ebdb0 |
@@ -9,7 +9,7 @@
|
||||
|
||||
```cmd
|
||||
/c/wamp64/bin/php/php8.3.28/php.exe artisan serve
|
||||
vite
|
||||
npm run dev
|
||||
/c/wamp64/bin/php/php8.3.28/php.exe artisan queue:work
|
||||
```
|
||||
|
||||
|
||||
+7
-1
@@ -1,4 +1,4 @@
|
||||
APP_NAME=Laverie
|
||||
APP_NAME=laundry-backend
|
||||
APP_ENV=local
|
||||
APP_KEY=
|
||||
APP_DEBUG=true
|
||||
@@ -38,8 +38,12 @@ SESSION_DOMAIN=null
|
||||
BROADCAST_CONNECTION=log
|
||||
FILESYSTEM_DISK=local
|
||||
QUEUE_CONNECTION=redis
|
||||
# En production sans Redis (VPS Ansible) : database
|
||||
# QUEUE_CONNECTION=database
|
||||
|
||||
CACHE_STORE=redis
|
||||
# En production sans Redis (VPS Ansible) : database
|
||||
# CACHE_STORE=database
|
||||
# CACHE_PREFIX=
|
||||
|
||||
MEMCACHED_HOST=127.0.0.1
|
||||
@@ -86,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
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"description": "The skeleton application for the Laravel framework.",
|
||||
"keywords": ["laravel", "framework"],
|
||||
"license": "MIT",
|
||||
"version": "0.0.3",
|
||||
"require": {
|
||||
"php": "^8.3",
|
||||
"inertiajs/inertia-laravel": "^2.0",
|
||||
|
||||
@@ -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' => [
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
"$schema": "https://www.schemastore.org/package.json",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"version": "0.0.3",
|
||||
"scripts": {
|
||||
"prod": "vite build",
|
||||
"dev": "vite"
|
||||
|
||||
+14
-3
@@ -11,6 +11,17 @@ Artisan::command('inspire', function () {
|
||||
$this->comment(Inspiring::quote());
|
||||
})->purpose('Display an inspiring quote');
|
||||
|
||||
Schedule::job(new CheckNoShowBookings)->everyFiveMinutes();
|
||||
Schedule::job(new RefreshOfflineMachines)->everyFiveMinutes();
|
||||
Schedule::job(new GenerateDailyStats)->dailyAt('01:00');
|
||||
Schedule::job(new CheckNoShowBookings)
|
||||
->everyFiveMinutes()
|
||||
->withoutOverlapping()
|
||||
->onOneServer();
|
||||
|
||||
Schedule::job(new RefreshOfflineMachines)
|
||||
->everyFiveMinutes()
|
||||
->withoutOverlapping()
|
||||
->onOneServer();
|
||||
|
||||
Schedule::job(new GenerateDailyStats)
|
||||
->dailyAt('01:00')
|
||||
->withoutOverlapping()
|
||||
->onOneServer();
|
||||
|
||||
Reference in New Issue
Block a user