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 [
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;
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()