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]]); } }