@extends('layouts.admin.master') @php $statusOptions = \App\Models\SmartCity\ServiceAppointment::STATUSES; $queueModeOptions = \App\Models\SmartCity\ServiceQueueConfig::QUEUE_MODES; @endphp @section('content')

Antrian & Booking

Vertical booking dan nomor antrian layanan publik yang menumpang pada service catalog, organisasi, notification, dan dashboard warga.

@foreach ($quickLinks as $link) {{ $link['label'] }} @endforeach
@if (session('success'))
{{ session('success') }}
@endif @if (session('error'))
{{ session('error') }}
@endif @if ($errors->any())
Validasi booking / antrian belum lengkap.
@endif @unless ($workflowReady)
Engine antrian belum aktif penuh karena migration batch ini belum dijalankan. Halaman tetap aman dibuka untuk review.
@endunless
@foreach ($summaryCards as $card)
{{ $card['title'] }}
{{ number_format($card['value']) }}

{{ $card['description'] }}

@endforeach
Filter Operasional

Baca data booking, slot, dan board operator berdasarkan OPD, layanan, tanggal, dan status.

Booking dan Nomor Antrian

Tracking booking dari publik, member, maupun input manual operator.

@forelse ($appointments as $appointment) @empty @endforelse
Booking Layanan Status Jadwal Aksi
{{ $appointment->booking_code }}
{{ $appointment->queue_number }} · {{ $appointment->booker_name }}
{{ $appointment->service?->nama ?: '-' }}
{{ $appointment->slot?->config?->location_name ?: '-' }}
{{ $appointment->status_label }} {{ optional($appointment->scheduled_for)->translatedFormat('d M Y H:i') ?: '-' }} @php($transitions = ['booked' => ['checked_in', 'cancelled', 'no_show'], 'checked_in' => ['called', 'cancelled', 'skipped'], 'called' => ['served', 'skipped', 'no_show'], 'skipped' => ['called', 'cancelled', 'no_show']][$appointment->status] ?? []) @if ($transitions !== [])
@csrf
@else Status final. @endif
Belum ada booking atau nomor antrian pada filter ini.
{{ $appointments->links() }}
Konfigurasi Layanan
@forelse ($configs as $config)
{{ $config->service?->nama ?: '-' }}
{{ $config->organization?->short_name ?: $config->organization?->name }} · {{ $config->location_name }}
{{ $config->queue_mode_label }} · Interval {{ $config->slot_interval_minutes }} menit · Kuota harian {{ $config->daily_quota }}
@empty
Belum ada konfigurasi antrian.
@endforelse
{{ $configs->links() }}
Slot Layanan
@forelse ($slots as $slot)
{{ $slot->service?->nama ?: '-' }}
{{ $slot->slot_label }}
Kuota {{ $slot->quota_booked }}/{{ $slot->quota_total }} · Sisa {{ $slot->remaining_quota }}
@empty
Belum ada slot layanan.
@endforelse
{{ $slots->links() }}
Tambah Konfigurasi
@if ($workflowReady)
@csrf
@else
Form aktif setelah migration appointment/queue dijalankan.
@endif
Publikasikan Slot
@if ($workflowReady && $configs->count() > 0)
@csrf
@else
Tambahkan konfigurasi dulu agar slot bisa dipublikasikan.
@endif
Input Manual / Walk-In
@if ($workflowReady && $slots->count() > 0)
@csrf
@else
Slot aktif belum tersedia untuk input manual.
@endif
Board Hari Ini
@forelse ($todayBoard as $item)
{{ $item->queue_number }}
{{ $item->booker_name }} · {{ $item->service?->nama }}
{{ $item->status_label }}
@empty
Belum ada board aktif pada tanggal filter ini.
@endforelse
Peringatan Operasional
@forelse ($warnings as $warning)
{{ $warning }}
@empty
Tidak ada warning utama pada baseline antrian saat ini.
@endforelse
@endsection @section('stylesheet') @endsection @section('javascript') @endsection