'$refresh', ]; public function table(Table $table): Table { return $table ->query(MultilineClient::query()->where('client_bookmaker_id', auth()->user()->bookmaker_id)->where('sport_id', auth()->user()->sport_id)) ->paginated(false) ->columns([ IconColumn::make('sport.icon') ->label('') ->width('1rem') ->icon(function ($record): string { return $record->sport->icon; }), TextColumn::make('sport.name'), TextColumn::make('multiline_setting.name')->label('Bettype'), BookmakerIcon::make('bookmaker.icon')->size('xl')->label('Icon'), SelectColumn::make('bookmaker_id') ->label('Bookmaker') ->width('2rem') ->options(function () { if (auth()->user()->sport_id == 1) { return Bookmaker::where('in_soccer', 1)->pluck('name', 'id'); } else { return Bookmaker::where('in_other', 1)->pluck('name', 'id'); } }), ]) ->defaultSort('sort') ->deferFilters(false) ->headerActions([ Action::make(name: 'make_all_like_selected')->action(function () { $res = MultilineClient::where('sport_id', auth()->user()->sport_id) ->where('client_bookmaker_id', auth()->user()->bookmaker_id) ->where('multiline_setting_id', $this->option_selected)->get(); foreach ($res as $value) { MultilineClient::where('sport_id', auth()->user()->sport_id) ->where('client_bookmaker_id', auth()->user()->bookmaker_id) ->where('position', $value->position) ->update(['bookmaker_id' => $value->bookmaker_id]); } }), ]) ->filters([ Filter::make('multiline_setting_id') ->schema([ Radio::make('multiline_setting_id') ->extraAttributes(['id' => 'multiline_setting']) ->inline() ->default(-1) ->columnSpan(6) ->columnSpanFull() ->hiddenLabel() ->options(fn () => MultilineSetting::where('sport_id', auth()->user()->sport_id)->orderBy('name')->pluck('name', 'id')), ]) ->query(function (Builder $query, array $data): Builder { $this->option_selected = $data['multiline_setting_id']; return $query ->when( $data['multiline_setting_id'], fn (Builder $query, $multiline_setting_id): Builder => $query->where('multiline_setting_id', $multiline_setting_id), ); }) ->columns(6)->columnSpan(6), ], layout: FiltersLayout::AboveContent) ->hiddenFilterIndicators(); } public function render(): View { return view('livewire.multiline-bookmaker'); } }