Initial Ladill Queue release — enterprise QMS standalone app.
Deploy Ladill Queue / deploy (push) Successful in 56s

Phases 1–6: tickets, counters, displays, appointments, workflows, rules, analytics, reports, feedback, admin, device API, and Gitea deploy workflow for queue.ladill.com.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-06-29 20:19:52 +00:00
co-authored by Cursor
commit cca98eefd2
297 changed files with 27263 additions and 0 deletions
+44
View File
@@ -0,0 +1,44 @@
<?php
namespace App\Services\Qms;
use App\Models\Device;
use App\Models\Ticket;
use Illuminate\Support\Str;
class DeviceService
{
public function findByToken(string $token): ?Device
{
return Device::query()
->where('device_token', $token)
->first();
}
public function recordHeartbeat(Device $device): void
{
$device->update([
'status' => 'online',
'last_online_at' => now(),
]);
}
public function markStaleOffline(int $minutes = 10): int
{
return Device::query()
->where('status', 'online')
->where(function ($q) use ($minutes) {
$q->whereNull('last_online_at')
->orWhere('last_online_at', '<', now()->subMinutes($minutes));
})
->update(['status' => 'offline']);
}
public function generateToken(Device $device): string
{
$token = Str::random(48);
$device->update(['device_token' => $token]);
return $token;
}
}