Initial Ladill Queue release — enterprise QMS standalone app.
Deploy Ladill Queue / deploy (push) Successful in 56s
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:
@@ -0,0 +1,71 @@
|
||||
<?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]]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user