striped() ->recordAction(null) ->poll('10s') ->columns([ Split::make([ TextColumn::make('id')->badge()->alignCenter(), TextColumn::make('provider.name') ->color(fn ($record): string => match ($record->provider_id) { 1 => 'danger', 8 => 'danger', 2 => 'success', default => 'warning', }), Stack::make([ SelectColumn::make('name') ->disablePlaceholderSelection() ->hidden(function (ListSupervisors $livewire) { return $livewire->tableFilters['provider_id']['value'] == 8; }) ->options(function ($record) { switch ($record->provider_id) { case 1: case 3: case 4: case 5: case 6: return [ 'Fixtures' => 'Fixtures', 'Odds' => 'Odds', ]; case 2: return [ 'Fixtures' => 'Fixtures', 'Odds' => 'Odds', 'Willhill' => 'Willhill', 'Bwin' => 'Bwin', 'Bet365' => 'Bet365', 'Betfair' => 'Betfair', ]; case 7: /** * functions for services */ return [ 'Txodds Markets' => 'Txodds Markets', 'DB Mapper' => 'DB Mapper', 'Generate Default Setting' => 'Generate Default Setting', 'Alarm Generator' => 'Alarm Generator', ]; case 9: case 10: return [ 'GRAPPER DIRCET' => 'GRAPPER DIRCET', ]; default: return []; } }), SelectColumn::make('sport_id') ->options(fn () => Sport::where('is_active', 1)->pluck('name', 'id')) ->placeholder('All'), SelectColumn::make('txodds_market_id') ->visible(function (ListSupervisors $livewire) { return $livewire->tableFilters['provider_id']['value'] == 8; }) ->options(function ($record) { switch ($record->sport_id) { case 1: return TxoddsMarket::where('soccer', 1)->pluck('name', 'market_id'); case 2: return TxoddsMarket::where('ice_hockey', 1)->pluck('name', 'market_id'); case 3: return TxoddsMarket::where('basketball', 1)->pluck('name', 'market_id'); case 5: return TxoddsMarket::where('tennis', 1)->pluck('name', 'market_id'); } }) ->placeholder('All Markets'), ])->space(3), Stack::make([ TextInputColumn::make('days_from')->prefix('Days Fm') ->hidden(function (ListSupervisors $livewire) { return $livewire->tableFilters['provider_id']['value'] == 8; }), TextInputColumn::make('days_to')->prefix('Days To') ->hidden(function (ListSupervisors $livewire) { return $livewire->tableFilters['provider_id']['value'] == 8; }), ])->space(3), Stack::make([ TextColumn::make('lastcall') ->prefix('Lastcall: ') ->badge() ->color(fn ($state): string => ($state > 0 && $state > time() - 300) ? 'success' : 'danger') ->dateTime() ->visible(function (ListSupervisors $livewire) { return $livewire->tableFilters['provider_id']['value'] == 8; }), TextInputColumn::make('sleep')->prefix('Seep'), TextInputColumn::make('commandline_options')->prefix('Bash') ->hidden(function (ListSupervisors $livewire) { return $livewire->tableFilters['provider_id']['value'] == 8; }), ])->space(3), // ToggleColumn::make('use_lastcall')->label('Lastcall')->tooltip('Use last call parameter'), ToggleColumn::make('is_supervisor')->label('Super')->tooltip('Run as supervisor'), ToggleColumn::make('is_active')->label('Active')->tooltip(('On/Off'))->onColor('success')->offColor('danger'), TextColumn::make('runtime')->badge()->prefix('Runtime: '), ]), ]) ->filters([ SelectFilter::make('provider_id') ->default(1) ->selectablePlaceholder(false) ->relationship('provider', 'name') ->label('Provider'), SelectFilter::make('sport_id') ->default(1) ->relationship('sport', 'name') ->label('Sport'), TernaryFilter::make('is_supervisor')->label('Run by supervisor'), TernaryFilter::make('is_active'), ], layout: FiltersLayout::AboveContent) ->deferFilters(false) ->recordActions([ EditAction::make()->hiddenLabel(), DeleteAction::make()->hiddenLabel(), ]) ->toolbarActions([ BulkActionGroup::make([ BulkAction::make('sleep') ->label('Sleep') ->icon('phosphor-timer') ->action(function (Collection $records, array $data): void { foreach ($records as $record) { Supervisor::where('id', '=', $record->id) ->update( ['sleep' => $data['sleep']] ); } }) ->form([ TextInput::make('sleep')->hiddenLabel()->prefix('Sleep'), ]), BulkAction::make('Switch On') ->icon('phosphor-play') ->action(function (Collection $records): void { foreach ($records as $record) { Supervisor::where('id', '=', $record->id) ->update( ['is_active' => 1] ); } }), BulkAction::make('Switch Off') ->icon('phosphor-stop') ->action(function (Collection $records): void { foreach ($records as $record) { Supervisor::where('id', '=', $record->id) ->update( ['is_active' => 0] ); } }), BulkAction::make('As supervisor') ->icon('phosphor-play') ->action(function (Collection $records): void { foreach ($records as $record) { Supervisor::where('id', '=', $record->id) ->update( ['is_supervisor' => 1] ); } }), BulkAction::make('Not as supervisor') ->icon('phosphor-stop') ->action(function (Collection $records): void { foreach ($records as $record) { Supervisor::where('id', '=', $record->id) ->update( ['is_supervisor' => 0] ); } }), DeleteBulkAction::make(), ]), ]); } }