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>
61 lines
3.8 KiB
PHP
61 lines
3.8 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Api\AnalyticsController;
|
|
use App\Http\Controllers\Api\AppointmentController;
|
|
use App\Http\Controllers\Api\BranchController;
|
|
use App\Http\Controllers\Api\CounterController;
|
|
use App\Http\Controllers\Api\DeviceHeartbeatController;
|
|
use App\Http\Controllers\Api\PublicQueueController;
|
|
use App\Http\Controllers\Api\QueueRuleController;
|
|
use App\Http\Controllers\Api\ReportController;
|
|
use App\Http\Controllers\Api\ServiceEventController;
|
|
use App\Http\Controllers\Api\ServiceQueueController;
|
|
use App\Http\Controllers\Api\TicketController;
|
|
use App\Http\Controllers\Api\WorkflowController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::get('/health', fn () => response()->json(['status' => 'ok', 'app' => 'queue']));
|
|
|
|
Route::post('/devices/heartbeat', DeviceHeartbeatController::class)->name('api.devices.heartbeat');
|
|
|
|
Route::post('/service-events', ServiceEventController::class)->name('api.service-events');
|
|
|
|
Route::prefix('v1/public')->group(function () {
|
|
Route::post('/join', [PublicQueueController::class, 'join'])->name('api.public.join');
|
|
Route::get('/tickets/{qrToken}', [PublicQueueController::class, 'show'])->name('api.public.ticket');
|
|
Route::post('/tickets/{qrToken}/delay', [PublicQueueController::class, 'delay'])->name('api.public.ticket.delay');
|
|
Route::post('/tickets/{qrToken}/cancel', [PublicQueueController::class, 'cancel'])->name('api.public.ticket.cancel');
|
|
});
|
|
|
|
Route::middleware(['auth:sanctum', 'qms.setup'])->prefix('v1')->group(function () {
|
|
Route::get('/queues', [ServiceQueueController::class, 'index'])->name('api.queues.index');
|
|
Route::get('/queues/{serviceQueue}/waiting', [ServiceQueueController::class, 'waiting'])->name('api.queues.waiting');
|
|
Route::post('/queues/{serviceQueue}/pause', [ServiceQueueController::class, 'pause'])->name('api.queues.pause');
|
|
Route::post('/queues/{serviceQueue}/resume', [ServiceQueueController::class, 'resume'])->name('api.queues.resume');
|
|
|
|
Route::get('/tickets', [TicketController::class, 'index'])->name('api.tickets.index');
|
|
Route::post('/tickets', [TicketController::class, 'store'])->name('api.tickets.store');
|
|
Route::get('/tickets/{ticket}', [TicketController::class, 'show'])->name('api.tickets.show');
|
|
Route::post('/tickets/{ticket}/action', [TicketController::class, 'action'])->name('api.tickets.action');
|
|
Route::post('/queues/{serviceQueue}/call-next', [TicketController::class, 'callNext'])->name('api.queues.call-next');
|
|
|
|
Route::get('/counters', [CounterController::class, 'index'])->name('api.counters.index');
|
|
Route::post('/counters', [CounterController::class, 'store'])->name('api.counters.store');
|
|
|
|
Route::get('/appointments', [AppointmentController::class, 'index'])->name('api.appointments.index');
|
|
Route::post('/appointments', [AppointmentController::class, 'store'])->name('api.appointments.store');
|
|
Route::post('/appointments/{appointment}/check-in', [AppointmentController::class, 'checkIn'])->name('api.appointments.check-in');
|
|
|
|
Route::get('/workflows', [WorkflowController::class, 'index'])->name('api.workflows.index');
|
|
Route::get('/workflows/{workflow}', [WorkflowController::class, 'show'])->name('api.workflows.show');
|
|
|
|
Route::get('/queues/{serviceQueue}/rules', [QueueRuleController::class, 'index'])->name('api.rules.index');
|
|
Route::post('/queues/{serviceQueue}/rules', [QueueRuleController::class, 'store'])->name('api.rules.store');
|
|
|
|
Route::get('/analytics/overview', [AnalyticsController::class, 'overview'])->name('api.analytics.overview');
|
|
Route::get('/reports/{type}', [ReportController::class, 'show'])->name('api.reports.show');
|
|
|
|
Route::get('/branches', [BranchController::class, 'index'])->name('api.branches.index');
|
|
Route::post('/branches', [BranchController::class, 'store'])->name('api.branches.store');
|
|
});
|