From ed75b77b061fbce637562b483645f7acf9f8578e Mon Sep 17 00:00:00 2001 From: "Joseph.Rawlings" Date: Sat, 20 Dec 2025 16:28:49 -0500 Subject: [PATCH] feat: add service status tabs with counts and query modifications --- .../ServiceResource/Pages/ListService.php | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/app/Admin/Resources/ServiceResource/Pages/ListService.php b/app/Admin/Resources/ServiceResource/Pages/ListService.php index 78a0764d2..794d68a52 100644 --- a/app/Admin/Resources/ServiceResource/Pages/ListService.php +++ b/app/Admin/Resources/ServiceResource/Pages/ListService.php @@ -3,8 +3,11 @@ namespace App\Admin\Resources\ServiceResource\Pages; use App\Admin\Resources\ServiceResource; +use App\Models\Service; use Filament\Actions; +use Filament\Resources\Components\Tab; use Filament\Resources\Pages\ListRecords; +use Illuminate\Database\Eloquent\Builder; class ListService extends ListRecords { @@ -16,4 +19,38 @@ class ListService extends ListRecords Actions\CreateAction::make(), ]; } + + public function getTabs(): array + { + return [ + 'all' => Tab::make('All Services') + ->icon('ri-apps-line') + ->badge(Service::count()), + 'active' => Tab::make('Active') + ->icon('ri-checkbox-circle-line') + ->badgeColor('success') + ->modifyQueryUsing(fn (Builder $query) => $query->where('status', 'active')) + ->badge(Service::where('status', 'active')->count()), + 'pending' => Tab::make('Pending') + ->icon('ri-time-line') + ->badgeColor('warning') + ->modifyQueryUsing(fn (Builder $query) => $query->where('status', 'pending')) + ->badge(Service::where('status', 'pending')->count()), + 'suspended' => Tab::make('Suspended') + ->icon('ri-pause-circle-line') + ->badgeColor('warning') + ->modifyQueryUsing(fn (Builder $query) => $query->where('status', 'suspended')) + ->badge(Service::where('status', 'suspended')->count()), + 'cancelled' => Tab::make('Cancelled') + ->icon('ri-close-circle-line') + ->badgeColor('danger') + ->modifyQueryUsing(fn (Builder $query) => $query->where('status', 'cancelled')) + ->badge(Service::where('status', 'cancelled')->count()), + ]; + } + + public function getDefaultActiveTab(): string|int|null + { + return 'active'; + } }