diff --git a/app/Filament/Resources/UserResource/Pages/EditUser.php b/app/Filament/Resources/UserResource/Pages/EditUser.php index caf445640..79e1099a9 100644 --- a/app/Filament/Resources/UserResource/Pages/EditUser.php +++ b/app/Filament/Resources/UserResource/Pages/EditUser.php @@ -69,26 +69,6 @@ class EditUser extends EditRecord { return [ Actions\DeleteAction::make(), - - Actions\Action::make('toggleSuspend') - ->hidden(fn (User $user) => $user->servers()->whereNot('status', ServerState::Suspended)->count() === 0) - ->label('Suspend Servers') - ->color('warning') - ->action(function (User $user) { - foreach ($user->servers()->whereNot('status', ServerState::Suspended)->get() as $server) { - resolve(SuspensionService::class)->toggle($server); - } - }), - - Actions\Action::make('toggleUnsuspend') - ->hidden(fn (User $user) => $user->servers()->where('status', ServerState::Suspended)->count() === 0) - ->label('Unsuspend Servers') - ->color('success') - ->action(function (User $user) { - foreach ($user->servers()->where('status', ServerState::Suspended)->get() as $server) { - resolve(SuspensionService::class)->toggle($server, SuspensionService::ACTION_UNSUSPEND); - } - }), ]; } } diff --git a/app/Filament/Resources/UserResource/RelationManagers/ServersRelationManager.php b/app/Filament/Resources/UserResource/RelationManagers/ServersRelationManager.php index 2b4292e2b..7be484b60 100644 --- a/app/Filament/Resources/UserResource/RelationManagers/ServersRelationManager.php +++ b/app/Filament/Resources/UserResource/RelationManagers/ServersRelationManager.php @@ -2,9 +2,13 @@ namespace App\Filament\Resources\UserResource\RelationManagers; +use App\Enums\ServerState; use App\Models\Server; +use App\Models\User; +use App\Services\Servers\SuspensionService; use Filament\Tables; use Filament\Tables\Table; +use Filament\Tables\Actions; use Filament\Resources\RelationManagers\RelationManager; class ServersRelationManager extends RelationManager @@ -13,8 +17,36 @@ class ServersRelationManager extends RelationManager public function table(Table $table): Table { + /** @var User $user */ + $user = $this->getOwnerRecord(); + return $table ->searchable(false) + ->headerActions([ + Actions\Action::make('toggleSuspend') + ->hidden(fn () => $user->servers() + ->whereNot('status', ServerState::Suspended) + ->orWhereNull('status') + ->count() === 0 + ) + ->label('Suspend All Servers') + ->color('warning') + ->action(function () use ($user) { + foreach ($user->servers()->whereNot('status', ServerState::Suspended)->get() as $server) { + resolve(SuspensionService::class)->toggle($server); + } + }), + + Actions\Action::make('toggleUnsuspend') + ->hidden(fn () => $user->servers()->where('status', ServerState::Suspended)->count() === 0) + ->label('Unsuspend All Servers') + ->color('primary') + ->action(function () use ($user) { + foreach ($user->servers()->where('status', ServerState::Suspended)->get() as $server) { + resolve(SuspensionService::class)->toggle($server, SuspensionService::ACTION_UNSUSPEND); + } + }), + ]) ->columns([ Tables\Columns\TextColumn::make('uuid') ->hidden()