hasAnyRole(['super-admin', 'admin', 'amministratore', 'collaboratore']); } public function mount(): void { $this->mountInteractsWithTable(); } protected function getTableQuery(): Builder { $user = Auth::user(); if (! $user instanceof User) { return Palazzina::query()->whereRaw('1 = 0'); } $activeStabileId = StabileContext::resolveActiveStabileId($user); if (! $activeStabileId) { return Palazzina::query()->whereRaw('1 = 0'); } return Palazzina::query() ->where('stabile_id', $activeStabileId) ->withCount('unitaImmobiliari') ->orderBy('codice_palazzina'); } public function table(Table $table): Table { return $table ->striped() ->columns([ TextColumn::make('codice_palazzina') ->label('Codice') ->sortable() ->searchable(), TextColumn::make('denominazione') ->label('Denominazione') ->searchable() ->wrap(), TextInputColumn::make('numero_scale') ->label('Scale') ->type('number') ->inputMode('numeric') ->rules(['nullable', 'integer', 'min:0']) ->sortable() ->toggleable(), TextInputColumn::make('numero_piani_fuori_terra') ->label('Piani') ->type('number') ->inputMode('numeric') ->rules(['nullable', 'integer', 'min:0']) ->sortable() ->toggleable(), TextColumn::make('unita_immobiliari_count') ->label('Unità') ->sortable() ->toggleable(), IconColumn::make('attiva') ->label('Attiva') ->boolean(), ]) ->actions([ Action::make('interni') ->label('Interni') ->icon('heroicon-o-rectangle-group') ->url(fn(Palazzina $record) => PalazzineInterni::getUrl(panel: 'admin-filament') . '?palazzina_id=' . (int) $record->id . '&back=' . urlencode((string) request()->getRequestUri())), ]); } }