with(['fromCountry', 'toCountry']) ->orderBy('created_at', 'desc') ->limit(5) ->get() ->map(function ($s) { return [ 'awb' => $s->awb_no, 'route' => ($s->fromCountry?->name ?? '?') . ' ← ' . ($s->toCountry?->name ?? '?'), 'status' => $s->status?->value ?? '—', 'status_label' => $this->statusLabel($s->status?->value), 'status_color' => $this->statusBadgeClass($s->status?->value), 'date' => Jalalian::fromCarbon($s->created_at)->format('Y/m/d'), 'amount' => $s->total_fee ? ifnex_format_number($s->total_fee) : '—', 'url' => route('filament.admin.resources.shipments.view', $s), ]; }); return [ 'recentShipments' => $recentShipments, 'viewAllUrl' => route('filament.admin.resources.shipments.index'), ]; } private function statusLabel(?string $status): string { return match ($status) { 'pending_approval' => 'در انتظار تأیید', 'approved' => 'تأیید شده', 'pending_payment' => 'در انتظار پرداخت', 'cancelled' => 'لغو شده', 'processed' => 'در حال پردازش', 'picked_up' => 'تحویل به حمل‌کننده', 'in_transit' => 'در حال حمل', 'out_for_delivery' => 'آماده تحویل', 'failed' => 'تحویل ناموفق', 'delivered' => 'تحویل شده', 'returned' => 'برگشتی', 'archived' => 'آرشیو', default => '—', }; } /** * Return the badge CSS class name — uses the new ifnex-badge-* styles * defined in head.blade.php (success / warning / danger / info / gray). */ private function statusBadgeClass(?string $status): string { return match ($status) { 'pending_approval', 'pending_payment' => 'ifnex-badge-warning', 'approved' => 'ifnex-badge-info', 'picked_up', 'in_transit' => 'ifnex-badge-info', 'out_for_delivery' => 'ifnex-badge-info', 'delivered' => 'ifnex-badge-success', 'cancelled', 'failed' => 'ifnex-badge-danger', 'returned' => 'ifnex-badge-warning', 'processed' => 'ifnex-badge-info', 'archived' => 'ifnex-badge-gray', default => 'ifnex-badge-gray', }; } }