diff --git a/app/Filament/Pages/UnitaImmobiliarePage.php b/app/Filament/Pages/UnitaImmobiliarePage.php index 35e59b3..0ee93f3 100755 --- a/app/Filament/Pages/UnitaImmobiliarePage.php +++ b/app/Filament/Pages/UnitaImmobiliarePage.php @@ -310,197 +310,7 @@ public function updatedUnitaId(): void protected function getHeaderActions(): array { - $prevId = $this->getPrevUnitaId(); - $nextId = $this->getNextUnitaId(); - - return [ - Action::make('modifica_unita') - ->label('Modifica unità') - ->icon('heroicon-o-pencil-square') - ->modalWidth('5xl') - ->visible(fn(): bool => (bool) $this->unitaId && $this->unita instanceof UnitaImmobiliare) - ->fillForm(fn(): array=> $this->getEditUnitaFormData()) - ->form([ - TextInput::make('codice_unita') - ->label('Codice unità') - ->maxLength(100) - ->columnSpan(3), - TextInput::make('denominazione') - ->label('Denominazione') - ->maxLength(255) - ->columnSpan(5), - TextInput::make('tipo_unita') - ->label('Tipologia') - ->maxLength(100) - ->columnSpan(2), - TextInput::make('categoria_catastale') - ->label('Categoria catastale') - ->maxLength(20) - ->columnSpan(2), - TextInput::make('scala') - ->label('Scala') - ->maxLength(50) - ->columnSpan(2), - TextInput::make('piano') - ->label('Piano') - ->maxLength(50) - ->columnSpan(2), - TextInput::make('interno') - ->label('Interno') - ->maxLength(50) - ->columnSpan(2), - TextInput::make('stato_occupazione') - ->label('Stato occupazione') - ->maxLength(100) - ->columnSpan(3), - TextInput::make('utilizzo_attuale') - ->label('Utilizzo attuale') - ->maxLength(100) - ->columnSpan(3), - Toggle::make('attiva') - ->label('Unità attiva') - ->columnSpan(2), - TextInput::make('acqua_contatore_seriale') - ->label('Seriale contatore acqua') - ->maxLength(100) - ->columnSpan(3), - TextInput::make('acqua_gateway_device_id') - ->label('ID dispositivo gateway acqua') - ->helperText('Identificativo inviato dal gateway per associare le letture a questa unità.') - ->maxLength(120) - ->columnSpan(3), - Textarea::make('note') - ->label('Note') - ->rows(4) - ->columnSpanFull(), - ]) - ->action(function (array $data): void { - $this->saveEditedUnita($data); - }), - Action::make('prev_unita') - ->label('Precedente') - ->icon('heroicon-o-arrow-left') - ->color('gray') - ->visible(fn(): bool => (bool) $this->getPrevUnitaId()) - ->url(fn(): string => $this->makeSelfUrl($prevId)), - Action::make('next_unita') - ->label('Successiva') - ->icon('heroicon-o-arrow-right') - ->color('gray') - ->visible(fn(): bool => (bool) $this->getNextUnitaId()) - ->url(fn(): string => $this->makeSelfUrl($nextId)), - Action::make('storico_ruoli') - ->label('Storico ruoli') - ->icon('heroicon-o-clock') - ->modalWidth('7xl') - ->visible(fn(): bool => (bool) $this->unitaId) - ->form([ - Repeater::make('ruoli') - ->label('Storico proprietari / inquilini') - ->defaultItems(0) - ->reorderable(true) - ->schema([ - Hidden::make('id'), - Select::make('rubrica_id') - ->label('Persona') - ->required() - ->searchable() - ->getSearchResultsUsing(function (string $search): array { - return RubricaUniversale::query() - ->ricerca($search) - ->limit(30) - ->get() - ->mapWithKeys(fn(RubricaUniversale $r) => [ - $r->id => $r->nome_completo . ($r->email ? (' · ' . $r->email) : ''), - ]) - ->all(); - }) - ->getOptionLabelUsing(function ($value): ?string { - if (! $value) { - return null; - } - $r = RubricaUniversale::query()->find($value); - return $r ? ($r->nome_completo . ($r->email ? (' · ' . $r->email) : '')) : null; - }) - ->columnSpan(5), - DatePicker::make('data_inizio') - ->label('Dal') - ->columnSpan(3), - DatePicker::make('data_fine') - ->label('Fino al') - ->columnSpan(3), - Select::make('ruolo') - ->label('Ruolo') - ->options($this->getRuoliLabels()) - ->columnSpan(3), - Toggle::make('attivo') - ->label('Attivo') - ->columnSpan(2), - ]) - ->columns(9), - ]), - Action::make('recapiti_email') - ->label('Recapiti email') - ->icon('heroicon-o-envelope') - ->modalWidth('7xl') - ->visible(fn(): bool => (bool) $this->unitaId) - ->form([ - Repeater::make('recapiti') - ->label('Recapiti email per servizio') - ->defaultItems(0) - ->reorderable(true) - ->schema([ - Hidden::make('id'), - Select::make('tipo_servizio') - ->label('Servizio') - ->options(UnitaRecapitoServizio::serviceLabels()) - ->native(false) - ->required() - ->columnSpan(3), - Select::make('persona_id') - ->label('Persona collegata') - ->options(fn(): array=> $this->getPersonaRecapitoOptions()) - ->searchable() - ->preload() - ->native(false) - ->columnSpan(4), - TextInput::make('email') - ->label('Email da usare') - ->email() - ->required() - ->placeholder('nome@example.it') - ->helperText('Scegli la persona collegata e usa una delle email mostrate nel relativo riepilogo.') - ->columnSpan(5), - TextInput::make('etichetta') - ->label('Etichetta') - ->maxLength(120) - ->columnSpan(4), - TextInput::make('note') - ->label('Note') - ->maxLength(255) - ->columnSpan(4), - Toggle::make('is_default') - ->label('Predefinita') - ->default(true) - ->columnSpan(2), - Toggle::make('attivo') - ->label('Attiva') - ->default(true) - ->columnSpan(2), - ]) - ->columns(12), - ]) - ->fillForm(fn(): array=> ['recapiti' => $this->getRecapitiServizioFormRows()]) - ->action(function (array $data): void { - $this->saveRecapitiServizioOverrides($data['recapiti'] ?? []); - $this->loadUnita(); - - \Filament\Notifications\Notification::make() - ->title('Recapiti email aggiornati') - ->success() - ->send(); - }), - ]; + return []; } protected function getRuoliLabels(): array @@ -1254,7 +1064,13 @@ protected function refreshUnitaOptions(): void } } if (is_string($owner) && trim($owner) !== '') { - $label .= ' — ' . trim($owner); + $ownerTrimmed = trim($owner); + $parts = array_values(array_filter(array_map('trim', explode('/', $ownerTrimmed)))); + if (count($parts) > 1) { + $label .= ' — ' . $parts[0] . ' (+' . (count($parts) - 1) . ')'; + } else { + $label .= ' — ' . $ownerTrimmed; + } } if ($u->trashed()) { $label .= ' [archiviata]'; diff --git a/resources/views/filament/pages/condomini/stabile.blade.php b/resources/views/filament/pages/condomini/stabile.blade.php index f225779..09dcccd 100755 --- a/resources/views/filament/pages/condomini/stabile.blade.php +++ b/resources/views/filament/pages/condomini/stabile.blade.php @@ -1,62 +1,155 @@ -
Seleziona uno stabile dall'elenco stabili o dal cruscotto per visualizzarne i dettagli di gestione.
+