diff --git a/app/Filament/Pages/Condomini/CatastoHub.php b/app/Filament/Pages/Condomini/CatastoHub.php index 00de8de..9d090c1 100644 --- a/app/Filament/Pages/Condomini/CatastoHub.php +++ b/app/Filament/Pages/Condomini/CatastoHub.php @@ -326,12 +326,28 @@ public function loadUnitaList(): void ->orderBy('interno'); if (trim($this->search) !== '') { - $query->where(function($q) { - $q->where('interno', 'like', '%' . $this->search . '%') - ->orWhere('scala', 'like', '%' . $this->search . '%') - ->orWhere('piano', 'like', '%' . $this->search . '%'); + $searchTerm = '%' . trim($this->search) . '%'; + $query->where(function($q) use ($searchTerm) { + $q->where('interno', 'like', $searchTerm) + ->orWhere('scala', 'like', $searchTerm) + ->orWhere('piano', 'like', $searchTerm); if (Schema::hasColumn('unita_immobiliari', 'subalterno')) { - $q->orWhere('subalterno', 'like', '%' . $this->search . '%'); + $q->orWhere('subalterno', 'like', $searchTerm); + } + if (Schema::hasTable('unita_immobiliare_nominativi')) { + $q->orWhereIn('id', function($subQuery) use ($searchTerm) { + $subQuery->select('unita_immobiliare_id') + ->from('unita_immobiliare_nominativi') + ->where('nominativo', 'like', $searchTerm); + }); + } + if (Schema::hasTable('anagrafiche') && Schema::hasTable('unita_anagrafica_periodo')) { + $q->orWhereIn('id', function($subQuery) use ($searchTerm) { + $subQuery->select('uap.unita_immobiliare_id') + ->from('unita_anagrafica_periodo as uap') + ->join('anagrafiche as a', 'a.id', '=', 'uap.anagrafica_id') + ->where(DB::raw("COALESCE(a.cognome, '') || ' ' || COALESCE(a.nome, '')"), 'like', $searchTerm); + }); } }); } diff --git a/resources/views/filament/pages/condomini/catasto-hub.blade.php b/resources/views/filament/pages/condomini/catasto-hub.blade.php index 420a0ec..1c6843b 100644 --- a/resources/views/filament/pages/condomini/catasto-hub.blade.php +++ b/resources/views/filament/pages/condomini/catasto-hub.blade.php @@ -398,9 +398,14 @@ class="bg-emerald-600 hover:bg-emerald-700 text-white font-bold px-1.5 py-0.5 ro