@section('topbar-title', 'Dashboard') {{-- ── Header ─────────────────────────────────────────────── --}}

Selamat Datang, {{ Str::words(auth()->user()->name, 2, '') }}! 👋

Berikut ringkasan operasional SparkWash hari ini.

Semua Booking
{{-- ── Stats Row 1: Big Numbers ─────────────────────────────── --}}
{{-- Total Booking --}}
{{ $totalBookings }}
Total Booking
{{-- Total User --}}
{{ $totalUsers }}
Total Customer
{{-- Total Layanan --}}
{{ $totalServices }}
Total Layanan
{{-- Total Jadwal --}}
{{ $totalSchedules }}
Total Jadwal
{{-- Total Antrian --}}
{{ $totalQueues }}
Antrian Aktif
{{-- Total Revenue --}}
Rp {{ number_format($totalRevenue/1000, 0, ',', '.') }}k
Total Pendapatan
{{-- ── Stats Row 2: Today --}}
{{ $bookingToday }}
Booking Hari Ini
{{ $bookingPending }}
Menunggu Konfirmasi
{{ $bookingInProcess }}
Sedang Dicuci
{{ $bookingCompleted }}
Booking Selesai
Rp {{ number_format($revenueToday, 0, ',', '.') }}
Pendapatan Hari Ini
Rp {{ number_format($revenueMonth/1000, 0, ',', '.') }}k
Pendapatan Bulan Ini
{{-- ── Charts Row ────────────────────────────────────────── --}}
{{-- Booking Chart --}}
Booking 7 Hari Terakhir
Total: {{ array_sum($bookingChart->toArray()) }}
{{-- Revenue Chart --}}
Pendapatan 7 Hari Terakhir
Rp {{ number_format(array_sum($revenueChartFull->toArray()), 0, ',', '.') }}
{{-- ── Popular Services + Status Distribution ──────────── --}}
{{-- Layanan Terpopuler --}}
Layanan Terpopuler
@if ($popularServices->isEmpty())
Belum ada data
@else
@foreach ($popularServices as $i => $item)
{{ $item->service->name ?? 'N/A' }} {{ $item->total }}x
@endforeach
@endif
{{-- Status Booking Distribution --}}
Distribusi Status Booking
@php $statusMap = [ 'pending' => ['label' => 'Menunggu', 'color' => '#F59E0B'], 'confirmed' => ['label' => 'Terkonfirmasi', 'color' => '#3B82F6'], 'check_in' => ['label' => 'Check In', 'color' => '#8B5CF6'], 'in_process' => ['label' => 'Sedang Dicuci', 'color' => '#06B6D4'], 'completed' => ['label' => 'Selesai', 'color' => '#22C55E'], 'late' => ['label' => 'Antrian Manual', 'color' => '#F97316'], 'void' => ['label' => 'Hangus', 'color' => '#EF4444'], 'cancelled' => ['label' => 'Dibatalkan', 'color' => '#94A3B8'], ]; @endphp @foreach ($statusMap as $key => $meta)
{{ $meta['label'] }} {{ \App\Models\Booking::where('status',$key)->count() }}
@endforeach
{{-- Booking Terbaru --}}
Booking Terbaru
Lihat semua
@forelse ($recentBookings as $booking)
#{{ str_pad($booking->queue_number,2,'0',STR_PAD_LEFT) }}
{{ $booking->user->name ?? '-' }}
{{ $booking->service->name ?? '-' }} @if($booking->schedule) · {{ $booking->schedule->date->locale('id')->isoFormat('D MMM') }} {{ substr($booking->schedule->time_slot,0,5) }} @endif
@php $b = $booking->status_badge; @endphp {{ $b['label'] }}
@empty
Belum ada booking
@endforelse
{{-- Antrian Hari Ini --}}
Antrian Hari Ini
Lihat semua
@forelse ($todaySchedules as $schedule)
{{ substr($schedule->time_slot,0,5) }}
{{ $schedule->bookings->count() }}/{{ $schedule->max_capacity }}
@if($schedule->bookings->count() > 0) @foreach($schedule->bookings->take(2) as $bk)
#{{ $bk->queue_number }}
{{ $bk->user->name }} @php $bb=$bk->status_badge; @endphp {{ $bb['label'] }}
@endforeach @if($schedule->bookings->count() > 2)
+{{ $schedule->bookings->count()-2 }} lainnya
@endif @else
— Kosong
@endif
@empty
Tidak ada jadwal hari ini
@endforelse
{{-- ── Pembayaran Menunggu Konfirmasi ─────────────────── --}} @if($pendingPayments->count() > 0)
Pembayaran Menunggu Konfirmasi {{ $pendingPayments->count() }}
Lihat semua
@foreach($pendingPayments as $payment)
{{ $payment->booking->user->name ?? '-' }}
{{ $payment->booking->service->name ?? '-' }} · {{ $payment->formatted_amount }}
Verifikasi
@endforeach
@endif {{-- Chart.js --}} @push('scripts') @endpush