feat: add service status tabs with counts and query modifications

This commit is contained in:
2025-12-20 16:28:49 -05:00
parent 33c20e991b
commit ed75b77b06

View File

@@ -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';
}
}