Swap suspend over

This commit is contained in:
Lance Pioch 2024-05-10 22:19:17 -04:00
parent 0c7ae26313
commit 39bc87c2e2
2 changed files with 32 additions and 20 deletions

View File

@ -69,26 +69,6 @@ class EditUser extends EditRecord
{ {
return [ return [
Actions\DeleteAction::make(), 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);
}
}),
]; ];
} }
} }

View File

@ -2,9 +2,13 @@
namespace App\Filament\Resources\UserResource\RelationManagers; namespace App\Filament\Resources\UserResource\RelationManagers;
use App\Enums\ServerState;
use App\Models\Server; use App\Models\Server;
use App\Models\User;
use App\Services\Servers\SuspensionService;
use Filament\Tables; use Filament\Tables;
use Filament\Tables\Table; use Filament\Tables\Table;
use Filament\Tables\Actions;
use Filament\Resources\RelationManagers\RelationManager; use Filament\Resources\RelationManagers\RelationManager;
class ServersRelationManager extends RelationManager class ServersRelationManager extends RelationManager
@ -13,8 +17,36 @@ class ServersRelationManager extends RelationManager
public function table(Table $table): Table public function table(Table $table): Table
{ {
/** @var User $user */
$user = $this->getOwnerRecord();
return $table return $table
->searchable(false) ->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([ ->columns([
Tables\Columns\TextColumn::make('uuid') Tables\Columns\TextColumn::make('uuid')
->hidden() ->hidden()