Files
ladill-queue/app/Http/Controllers/Api/ServiceQueueController.php
T
isaaccladandCursor cca98eefd2
Deploy Ladill Queue / deploy (push) Successful in 56s
Initial Ladill Queue release — enterprise QMS standalone app.
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>
2026-06-29 20:19:52 +00:00

72 lines
2.4 KiB
PHP

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Api\Concerns\ScopesApiToAccount;
use App\Http\Controllers\Controller;
use App\Models\Counter;
use App\Models\ServiceQueue;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class ServiceQueueController extends Controller
{
use ScopesApiToAccount;
public function index(Request $request): JsonResponse
{
$this->authorizeAbility($request, 'queues.view');
$owner = $this->ownerRef($request);
$organization = $this->organization($request);
$queues = ServiceQueue::owned($owner)
->where('organization_id', $organization->id)
->with(['branch', 'department'])
->orderBy('name')
->get()
->map(fn (ServiceQueue $q) => [
'uuid' => $q->uuid,
'name' => $q->name,
'prefix' => $q->prefix,
'strategy' => $q->strategy,
'is_active' => $q->is_active,
'is_paused' => $q->is_paused,
'branch' => $q->branch?->name,
]);
return response()->json(['data' => $queues]);
}
public function waiting(Request $request, ServiceQueue $serviceQueue): JsonResponse
{
$this->authorizeAbility($request, 'queues.view');
$this->authorizeOwner($request, $serviceQueue);
$tickets = app(\App\Services\Qms\QueueEngine::class)->waitingTickets($serviceQueue);
return response()->json([
'data' => array_map(fn ($t) => \App\Services\Qms\TicketPresenter::toArray($t), $tickets),
]);
}
public function pause(Request $request, ServiceQueue $serviceQueue): JsonResponse
{
$this->authorizeAbility($request, 'queues.manage');
$this->authorizeOwner($request, $serviceQueue);
$queue = app(\App\Services\Qms\QueueEngine::class)->pauseQueue($serviceQueue, $this->ownerRef($request));
return response()->json(['data' => ['uuid' => $queue->uuid, 'is_paused' => $queue->is_paused]]);
}
public function resume(Request $request, ServiceQueue $serviceQueue): JsonResponse
{
$this->authorizeAbility($request, 'queues.manage');
$this->authorizeOwner($request, $serviceQueue);
$queue = app(\App\Services\Qms\QueueEngine::class)->resumeQueue($serviceQueue, $this->ownerRef($request));
return response()->json(['data' => ['uuid' => $queue->uuid, 'is_paused' => $queue->is_paused]]);
}
}