columns([ ToggleColumn::make('im_newsletter') ->onColor('success') ->label('Senden'), TextColumn::make('company')->label('Firma'), TextColumn::make('email'), TextColumn::make('vereidigung')->date(), TextColumn::make('gender') ->label('Geschlecht') ->formatStateUsing(fn (string $state): string => match ($state) { '0' => 'Herr', '1' => 'Frau', '2' => 'Diverse', }), TextColumn::make('first_name')->label('Vorname'), TextColumn::make('last_name')->label('Nachname'), ]) ->filters([ TernaryFilter::make('im_newsletter')->label('Im Newsletter'), Filter::make('vereidigung') ->schema([ DatePicker::make('vereidigung_von')->native(false), DatePicker::make('vereidigung_bis')->native(false), ]) ->query(function (Builder $query, array $data): Builder { return $query ->when( $data['vereidigung_von'], fn (Builder $query, $date): Builder => $query->whereDate('vereidigung', '>=', $date), ) ->when( $data['vereidigung_bis'], fn (Builder $query, $date): Builder => $query->whereDate('vereidigung', '<=', $date), ); }), ], layout: FiltersLayout::Modal) ->recordActions([ EditAction::make()->iconButton(), DeleteAction::make()->iconButton(), ]) ->toolbarActions([ BulkActionGroup::make([ BulkAction::make('im_newsletter_on') ->label('An Adressen senden') ->tooltip('Ausgewählte Adressen dem Newsletter hinzufügen') ->icon('heroicon-o-envelope') ->color('success') ->action(function (Collection $records, array $data): void { foreach ($records as $record) { /** @var object $record */ MailAdressen::where('id', '=', $record->id) ->update( ['im_newsletter' => 1] ); } }), BulkAction::make('im_newsletter_off') ->label('Nicht an Adressen senden') ->tooltip('Ausgewählte Adressen aus dem Newsletter herausnehmen') ->icon('heroicon-o-envelope') ->action(function (Collection $records, array $data): void { foreach ($records as $record) { /** @var object $record */ MailAdressen::where('id', '=', $record->id) ->update( ['im_newsletter' => 0] ); } }), DeleteBulkAction::make(), ]), ]); } }