@if (client_is_vibrant()) @include('livewire.client.statistics-impulsa') @else @php // 7-day chart data — same structure as impulsa, reuses impulsa_chart() geometry $chartPoints = array_map(fn ($p) => [ 'label' => $p['label'], 'value' => $p['value'], 'extra' => ($p['spend'] ?? 0) > 0 ? client_money($p['spend']) : null, ], $stats['series'] ?? []); $spendPoints = array_map(fn ($p) => ['value' => $p['spend'] ?? 0], $stats['series'] ?? []); $hasSpend = array_sum(array_column($spendPoints, 'value')) > 0; $cOpts = ['vh' => 230, 'padX' => 30, 'padTop' => 14, 'padBottom' => 34, 'showAxis' => true]; $chart = impulsa_chart($chartPoints, $cOpts); $chart2 = impulsa_chart($spendPoints, ['showAxis' => false] + $cOpts); $kpis = [ ['label' => __('Your Balance'), 'value' => $stats['balance'], 'icon' => 'wallet', 'tint' => 'linear-gradient(135deg,#12c2b8,#0FB0A7)'], ['label' => __('Total Spent'), 'value' => $stats['spent'], 'icon' => 'trending-up', 'tint' => 'linear-gradient(135deg,#3b82f6,#2563eb)'], ['label' => __('Total Orders'), 'value' => number_format($stats['orders']), 'icon' => 'shopping-cart', 'tint' => 'linear-gradient(135deg,#f59e0b,#f97316)'], ['label' => __('Total Tickets'), 'value' => number_format($stats['tickets']), 'icon' => 'ticket', 'tint' => 'linear-gradient(135deg,#a855f7,#7c3aed)'], ]; // Donut geometry — same as impulsa $statusMeta = [ 'completed' => ['label' => __('Completed'), 'color' => '#22c55e'], 'processing' => ['label' => __('Processing'), 'color' => '#3b82f6'], 'in_progress' => ['label' => __('In progress'), 'color' => '#14b8a6'], 'active' => ['label' => __('Active'), 'color' => '#06b6d4'], 'awaiting' => ['label' => __('Awaiting'), 'color' => '#a78bfa'], 'pending' => ['label' => __('Pending'), 'color' => '#f59e0b'], 'partial' => ['label' => __('Partial'), 'color' => '#ec4899'], 'canceled' => ['label' => __('Canceled'), 'color' => '#64748b'], 'refunded' => ['label' => __('Refunded'), 'color' => '#8b5cf6'], 'error' => ['label' => __('Error'), 'color' => '#ef4444'], 'simulated' => ['label' => __('Simulated'), 'color' => '#f43f5e'], ]; $donut = []; foreach ($statusMeta as $key => $meta) { $v = (int) ($stats['byStatus'][$key] ?? 0); if ($v > 0) { $donut[] = ['label' => $meta['label'], 'color' => $meta['color'], 'value' => $v]; } } $donutTotal = array_sum(array_column($donut, 'value')); $dR = 50; $dC = 2 * M_PI * $dR; $dGap = count($donut) > 1 ? 5.0 : 0.0; $dAcc = 0.0; $segs = []; foreach ($donut as $d) { $frac = $donutTotal > 0 ? $d['value'] / $donutTotal : 0; $len = $frac * $dC; $segs[] = [ 'color' => $d['color'], 'dash' => round(max(0.6, $len - $dGap), 2), 'rot' => round(-90 + ($dAcc / $dC) * 360, 2), ]; $dAcc += $len; } @endphp {{-- Page header --}}

{{ __('Statistics') }}

{{ __('Welcome back') }}, {{ auth()->user()->display_name ?? auth()->user()->name }}.

{{ __('New Order') }}
{{-- KPI cards --}}
@foreach ($kpis as $kpi)
{{ $kpi['value'] }}
{{ $kpi['label'] }}
@endforeach
{{-- Chart + Donut row --}}
{{-- Area chart — real 7-day data + interactive hover --}}
{{ __('Recent Orders') }}
{{ __('Last 7 days') }} · {{ __('hover a point for details') }}
{{ __('Orders') }} @if ($hasSpend) {{ __('Spent') }} @endif
@foreach ($chart['gridYs'] as $gy) @endforeach @if ($hasSpend) @endif @foreach ($chart['coords'] as $pt) @endforeach @foreach ($chart['axis'] as $a) {{ $a['label'] }} @endforeach
{{-- Order status donut --}}
{{ __('Order status') }}
{{ number_format($donutTotal) }} {{ __('Orders') }}
@forelse ($donut as $d)
{{ $d['label'] }} {{ $donutTotal ? round($d['value'] / $donutTotal * 100) : 0 }}% {{ number_format($d['value']) }}
@empty

{{ __('No orders yet') }}

@endforelse
{{-- Latest orders + Orders in process --}}
{{-- Latest orders --}}
{{ __('Latest Orders') }}
{{ __('View all') }}
@forelse ($recent as $o)
#{{ $o->id }}
{{ \Illuminate\Support\Str::limit($o->serviceName(), 42) }}
{{ client_money($o->charge) }} · {{ number_format($o->quantity) }} · {{ rf_datetime($o->created_at) }}
@empty

{{ __('No orders yet') }}

{{ __('Place your first order') }}
@endforelse
{{-- Orders in process --}}
{{ __('Orders in Process') }}
@forelse ($inProcess as $o) @php $qty = (int) $o->quantity; $running = in_array($o->status, ['processing', 'in_progress', 'active'], true); $hasProgress = $running && $o->remains !== null && $o->start_counter !== null && $qty > 0; $delivered = $hasProgress ? max(0, $qty - (int) $o->remains) : null; $pct = $hasProgress ? min(100, (int) round($delivered / $qty * 100)) : null; @endphp
#{{ $o->id }} · {{ \Illuminate\Support\Str::limit($o->serviceName(), 34) }}
@if ($hasProgress)
{{ number_format($delivered) }} / {{ number_format($qty) }} {{ __('delivered') }} {{ $pct }}%
@else
{{ __('In queue — waiting to start') }} {{ number_format($qty) }}
@endif
@empty

{{ __('Nothing in process') }}

{{ __('All your orders are settled.') }}

@endforelse
@endif