hasAnyRole(['super-admin', 'admin']) && Schema::hasTable('fe_ritenute_previdenziali'); } public function mount(): void { $this->mountInteractsWithTable(); } protected function getTableQuery(): Builder { return FeRitenutaPrevidenziale::query(); } public function table(Table $table): Table { return $table ->striped() ->defaultSort('codice') ->columns([ TextColumn::make('codice')->label('Codice')->searchable()->sortable(), TextColumn::make('descrizione')->label('Descrizione')->searchable()->sortable(), IconColumn::make('attivo')->label('Attivo')->boolean()->sortable(), TextColumn::make('updated_at')->label('Aggiornato')->dateTime('d/m/Y H:i')->toggleable(isToggledHiddenByDefault: true), ]) ->headerActions([ Action::make('create') ->label('Nuovo') ->icon('heroicon-o-plus') ->form([ TextInput::make('codice')->label('Codice')->required()->maxLength(10), TextInput::make('descrizione')->label('Descrizione')->required()->maxLength(255), Toggle::make('attivo')->label('Attivo')->default(true), ]) ->action(function (array $data): void { FeRitenutaPrevidenziale::query()->create([ 'codice' => strtoupper(trim((string) ($data['codice'] ?? ''))), 'descrizione' => (string) ($data['descrizione'] ?? ''), 'attivo' => (bool) ($data['attivo'] ?? true), ]); }), ]) ->actions([ Action::make('edit') ->label('Modifica') ->icon('heroicon-o-pencil-square') ->form([ TextInput::make('descrizione')->label('Descrizione')->required()->maxLength(255), Toggle::make('attivo')->label('Attivo')->default(true), ]) ->fillForm(fn(FeRitenutaPrevidenziale $record): array => [ 'descrizione' => $record->descrizione, 'attivo' => (bool) $record->attivo, ]) ->action(function (FeRitenutaPrevidenziale $record, array $data): void { $record->fill([ 'descrizione' => (string) ($data['descrizione'] ?? ''), 'attivo' => (bool) ($data['attivo'] ?? true), ]); $record->save(); }), Action::make('delete') ->label('Elimina') ->icon('heroicon-o-trash') ->color('danger') ->requiresConfirmation() ->action(fn(FeRitenutaPrevidenziale $record) => $record->delete()), ]); } }