Initial Ladill Queue release — enterprise QMS standalone app.
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:
isaacclad
2026-06-29 20:19:52 +00:00
co-authored by Cursor
commit cca98eefd2
297 changed files with 27263 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
<x-app-layout :title="'Rules — '.$queue->name">
<div class="mb-6">
<a href="{{ route('qms.queues.index') }}" class="text-sm text-indigo-600"> Queues</a>
<h1 class="mt-2 text-2xl font-semibold">Queue rules</h1>
<p class="text-sm text-slate-600">{{ $queue->name }}</p>
</div>
@include('partials.flash')
<div class="mb-6 rounded-2xl border bg-white p-6 dark:border-slate-700 dark:bg-slate-900">
<h2 class="text-sm font-semibold">Add rule</h2>
<form method="POST" action="{{ route('qms.rules.store', $queue) }}" class="mt-4 grid gap-4 md:grid-cols-2">
@csrf
<div>
<label class="block text-sm font-medium">Type</label>
<select name="rule_type" required class="mt-1 w-full rounded-lg border-slate-300 text-sm">
@foreach ($ruleTypes as $value => $label)
<option value="{{ $value }}">{{ $label }}</option>
@endforeach
</select>
</div>
<div>
<label class="block text-sm font-medium">Overflow queue</label>
<select name="overflow_queue_id" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
<option value=""></option>
@foreach (\App\Models\ServiceQueue::owned($queue->owner_ref)->where('organization_id', $queue->organization_id)->where('id', '!=', $queue->id)->get() as $q)
<option value="{{ $q->id }}">{{ $q->name }}</option>
@endforeach
</select>
</div>
<div>
<label class="block text-sm font-medium">Waiting threshold</label>
<input name="waiting_threshold" type="number" min="1" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
</div>
<div>
<label class="block text-sm font-medium">Boost priority to</label>
<select name="priority" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
@foreach (config('qms.ticket_priorities') as $value => $label)
<option value="{{ $value }}">{{ $label }}</option>
@endforeach
</select>
</div>
<div class="md:col-span-2"><button type="submit" class="btn-primary">Add rule</button></div>
</form>
</div>
<div class="overflow-hidden rounded-2xl border bg-white dark:border-slate-700 dark:bg-slate-900">
<table class="min-w-full divide-y divide-slate-200">
<thead class="bg-slate-50"><tr>
<th class="px-4 py-3 text-left text-xs font-semibold uppercase text-slate-500">Type</th>
<th class="px-4 py-3 text-left text-xs font-semibold uppercase text-slate-500">Conditions</th>
<th class="px-4 py-3 text-left text-xs font-semibold uppercase text-slate-500">Actions</th>
<th></th>
</tr></thead>
<tbody class="divide-y divide-slate-200">
@forelse ($rules as $rule)
<tr>
<td class="px-4 py-3 text-sm">{{ $ruleTypes[$rule->rule_type] ?? $rule->rule_type }}</td>
<td class="px-4 py-3 text-xs text-slate-600">{{ json_encode($rule->conditions) }}</td>
<td class="px-4 py-3 text-xs text-slate-600">{{ json_encode($rule->actions) }}</td>
<td class="px-4 py-3 text-right">
<form method="POST" action="{{ route('qms.rules.destroy', [$queue, $rule]) }}">@csrf @method('DELETE')<button class="text-xs text-red-600">Remove</button></form>
</td>
</tr>
@empty
<tr><td colspan="4" class="px-6 py-8 text-center text-sm text-slate-500">No rules yet.</td></tr>
@endforelse
</tbody>
</table>
</div>
</x-app-layout>