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>
72 lines
2.4 KiB
PHP
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]]);
|
|
}
|
|
}
|