From 00502f6d4d6ebeb496d046e559afefec22530430 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 25 Apr 2024 17:45:49 -0400 Subject: [PATCH] Allow suspension of servers --- .../Resources/UserResource/Pages/EditUser.php | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/app/Filament/Resources/UserResource/Pages/EditUser.php b/app/Filament/Resources/UserResource/Pages/EditUser.php index 032b97118..c7cc35de8 100644 --- a/app/Filament/Resources/UserResource/Pages/EditUser.php +++ b/app/Filament/Resources/UserResource/Pages/EditUser.php @@ -2,7 +2,9 @@ namespace App\Filament\Resources\UserResource\Pages; +use App\Enums\ServerState; use App\Filament\Resources\UserResource; +use App\Services\Servers\SuspensionService; use Filament\Actions; use Filament\Resources\Pages\EditRecord; use App\Models\User; @@ -67,6 +69,26 @@ 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 All 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 All 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); + } + }), ]; } }