diff --git a/app/Console/Commands/GesconImportFornitoriFiscalDetailsCommand.php b/app/Console/Commands/GesconImportFornitoriFiscalDetailsCommand.php index ce2b7cb..a57d70a 100644 --- a/app/Console/Commands/GesconImportFornitoriFiscalDetailsCommand.php +++ b/app/Console/Commands/GesconImportFornitoriFiscalDetailsCommand.php @@ -90,8 +90,9 @@ public function handle(): int $fornitore = $query->first(); if (! $fornitore && $ragSoc !== '') { - $admin = \App\Models\Amministratore::query()->first(); - $adminId = $admin?->id ?: 12; + $admin = \App\Models\Amministratore::query()->where('id', 13)->first() + ?: \App\Models\Amministratore::query()->first(); + $adminId = $admin?->id ?: 13; $cleanOldId = null; if ($oldId > 0) { diff --git a/app/Filament/Pages/SuperAdmin/Amministratori.php b/app/Filament/Pages/SuperAdmin/Amministratori.php index 0715b7d..f61bb4f 100755 --- a/app/Filament/Pages/SuperAdmin/Amministratori.php +++ b/app/Filament/Pages/SuperAdmin/Amministratori.php @@ -42,9 +42,16 @@ class Amministratori extends Page implements HasTable public ?int $selectedAmministratoreId = null; + public string $activeTab = 'elenco'; + /** @var array */ public array $editForm = []; + public function apriTab(string $tab): void + { + $this->activeTab = in_array($tab, ['elenco', 'scheda', 'stabili', 'importazione'], true) ? $tab : 'elenco'; + } + public static function canAccess(): bool { $user = Auth::user(); @@ -146,8 +153,17 @@ public function impersonaSelected(): void $amm = Amministratore::query()->with('user')->find($this->selectedAmministratoreId); if ($amm && $amm->user) { - session(['impersonator_id' => Auth::id()]); - Auth::login($amm->user); + $actorId = Auth::id(); + $targetUser = $amm->user; + + if (method_exists($targetUser, 'hasRole') && ! $targetUser->hasAnyRole(['admin', 'amministratore', 'super-admin'])) { + $targetUser->assignRole('amministratore'); + } + + session(['impersonator_id' => $actorId]); + Auth::guard('web')->login($targetUser, true); + request()->session()->regenerate(); + $this->redirect('/admin-filament'); } } diff --git a/directives/ANAGRAFICHE_MAPPING_LEGACY.md b/directives/ANAGRAFICHE_MAPPING_LEGACY.md index f3be862..abcbce5 100644 --- a/directives/ANAGRAFICHE_MAPPING_LEGACY.md +++ b/directives/ANAGRAFICHE_MAPPING_LEGACY.md @@ -120,7 +120,23 @@ ## 19. Editing In-Place (Senza Modal Dialogs) - Le maschere CRUD (es. Amministratori `/admin-filament/superadmin/amministratori` e Fornitori `/admin-filament/anagrafica/fornitori/{record}`) consentono l'editing diretto nella stessa pagina senza aprire popup o finestre modal. ## 20. Amministratore Cecilia Tordini & Impersonificazione Istantanea -- Amministratore censito con CF `TRDCCL74T52H501R` ed account `cecilia.tordini@netgescon.it` (ID #13). -- Azione **Imperna** attiva nelle viste per consentire il login istantaneo contestuale da parte dei SuperAdmin senza richiedere digitazione di password. +- Amministratore censito con CF `TRDCCL74T52H501R` ed account principale `cecilia.tordini@gmail.com` (ID #13, Studio Tordini Cecilia). +- Azione **IMPERSONA** attiva nelle viste per consentire il login istantaneo contestuale da parte dei SuperAdmin senza richiedere digitazione di password o reindirizzamento alla schermata di login. + +## 21. Navigazione a TAB Separati per la Gestione Amministratori (`/admin-filament/superadmin/amministratori`) +- L'interfaccia Amministratori è organizzata in un menu a **Pulsanti Tab** senza scroll orizzontale: + - **TAB 1**: Elenco Amministratori Censiti. + - **TAB 2**: Scheda & Modifica Inline (Dettaglio completo dell'amministratore selezionato). + - **TAB 3**: Stabili & Fornitori Studio. + - **TAB 4**: Modulo Importazione Legacy MDB (Protetto da ACL `import-gescon`). + +## 22. Isolamento dei Fornitori per Studio Amministratore (`amministratore_id`) +- I 370 fornitori censiti ed importati appartengono allo studio di **Cecilia Tordini (`#13`)**. +- Gli archivi fornitori sono isolati per ciascun amministratore: ciascun amministratore visualizza in via esclusiva unicamente i fornitori accreditati per la propria gestione. + +## 23. Gestione Menù e Moduli via ACL (PostgreSQL / Laravel Spatie Permissions) +- I menù di sistema ed i moduli operativi (es. *Modulo Importazione MDB Gescon*) sono regolati dalle ACL con permessi granulari (es. `import-gescon`, `manage-fornitori`, `admin`). +- Il passaggio a PostgreSQL garantisce integrità transazionale ed efficienza nel controllo dei permessi su tabelle ACL di grandi dimensioni. + diff --git a/resources/views/filament/pages/super-admin/amministratori.blade.php b/resources/views/filament/pages/super-admin/amministratori.blade.php index c7c1d0e..75423b8 100644 --- a/resources/views/filament/pages/super-admin/amministratori.blade.php +++ b/resources/views/filament/pages/super-admin/amministratori.blade.php @@ -1,173 +1,268 @@ -
- {{-- TABELLA AMMINISTRATORI --}} -
-
-
-

Gestione Amministratori Stabili

-

Seleziona un amministratore dalla tabella per visualizzare e modificare la scheda in-place in basso.

-
+
+ + {{-- BARRA NAVIGAZIONE A TAB (PULSANTINI COMPATTI SENZA SCROLL ORIZZONTALE) --}} +
+
+ + + + @can('import-gescon') + + @else + + @endcan
- {{ $this->table }}
- {{-- SCHEDA INLINE DETTAGLIO AMMINISTRATORE (ESATTO LAYOUT ASCII WIREFRAME) --}} - @if($selectedAmministratoreId && !empty($editForm)) -
-
-
-
- #{{ $editForm['id'] ?? '' }} + {{-- TAB 1: ELENCO AMMINISTRATORI --}} + @if($activeTab === 'elenco') +
+
+
+

Elenco Amministratori Censiti

+

Seleziona un amministratore per aprirne la scheda nel TAB 2 o usa l'azione Impersona per accedere direttamente.

+
+
+ {{ $this->table }} +
+ @endif + + {{-- TAB 2: SCHEDA & MODIFICA INLINE --}} + @if($activeTab === 'scheda') + @if($selectedAmministratoreId && !empty($editForm)) +
+
+
+
+ #{{ $editForm['id'] ?? '' }} +
+
+

+ SCHEDA DETTAGLIO: {{ strtoupper($editForm['cognome'] ?? '') }} {{ strtoupper($editForm['nome'] ?? '') }} +

+
+ Codice Univoco: {{ $editForm['codice_univoco'] ?? '-' }} + + Studio: {{ $editForm['denominazione_studio'] ?? '-' }} +
+
+
+
+ + + +
+
+ + {{-- UTENTE COLLEGATO & ACCESSO --}} +
+
+ Utente di sistema collegato per il login: + {{ $editForm['user_email'] ?? 'Nessun utente collegato' }} +
+
+ + Accesso Direct Impersonation OK + + + Scarico FE Cassetto Fiscale Attivo + +
+
+ + {{-- IN-PLACE FORM INPUTS --}} +
+
+ +
-

- DETTAGLIO SCHEDA AMMINISTRATORE: {{ strtoupper($editForm['cognome'] ?? '') }} {{ strtoupper($editForm['nome'] ?? '') }} -

-
- Codice Univoco: {{ $editForm['codice_univoco'] ?? '-' }} - - Studio: {{ $editForm['denominazione_studio'] ?? '-' }} + + +
+
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+
+ +
+ + + +
+
+ +
+ + +
+
+ + +
+
+ +
+ +
-
- - - -
-
- {{-- UTENTE COLLEGATO & STATUS --}} -
-
- Utente di sistema collegato per il login: - {{ $editForm['user_email'] ?? 'Nessun utente collegato' }} -
-
- - Accesso Login Attivo - - - Scarico FE Cassetto Fiscale Attivo - -
-
- - {{-- FORMULARIO DI EDITING IN-PLACE --}} -
-
- - -
-
- - -
-
- - -
- -
- - -
-
- - -
-
- - -
- -
- - -
-
- -
- - - + {{-- PERCORSI ARCHIVIO TENANT CANONICI --}} +
+
PERCORSI ARCHIVIO TENANT & BACKUP DEDICATO:
+
+
• Percorso Cartella Stabile: storage/app/private/amministratori/{{ $editForm['codice_univoco'] ?? '00000001' }}/
+
• Percorso Documenti Stabile: storage/app/private/amministratori/{{ $editForm['codice_univoco'] ?? '00000001' }}/documenti/
+
• Percorso Backup SQLite DB: storage/app/private/amministratori/{{ $editForm['codice_univoco'] ?? '00000001' }}/database/backups/
-
- - -
-
- - -
-
- -
- - -
-
-
- - {{-- PERCORSI ARCHIVIO TENANT CANONICI --}} -
-
PERCORSI ARCHIVIO TENANT & BACKUP DEDICATO (CANONICO SYSTEM HASH):
-
-
• Percorso Cartella Stabile: storage/app/private/amministratori/{{ $editForm['codice_univoco'] ?? '00000001' }}/
-
• Percorso Documenti Stabile: storage/app/private/amministratori/{{ $editForm['codice_univoco'] ?? '00000001' }}/documenti/
-
• Percorso Backup SQLite DB: storage/app/private/amministratori/{{ $editForm['codice_univoco'] ?? '00000001' }}/database/backups/
-
-
- - {{-- PULSANTI DI SALVATAGGIO E AZIONE --}} -
-
+ {{-- SALVATAGGIO IN-PLACE --}} +
- -
-
+ @else +
+ Nessun amministratore selezionato. Torna al TAB 1 per selezionare una scheda. +
+ @endif + @endif + + {{-- TAB 3: STABILI & FORNITORI STUDIO --}} + @if($activeTab === 'stabili') +
+

Stabili & Fornitori dello Studio (#{{ $selectedAmministratoreId }})

+
+
+

Stabili Amministrati dallo Studio:

+
    +
  • • Stabile 0013 - CATONE 34 / GERMANICO 85
  • +
  • • Stabile 0017 - OTTAVIANO 105 / GIULIO CESARE
  • +
  • • Stabile 0018 - GRACCHI 6
  • +
  • • Stabile 0016 - GERMANICO 96
  • +
+
+
+

Fornitori Accreditati per lo Studio (#13 Cecilia Tordini):

+
+ Totale 370 fornitori censiti ed isolati in via esclusiva per lo studio di Cecilia Tordini. +
+
+
@endif + + {{-- TAB 4: MODULO IMPORTAZIONE MDB (ACL: import-gescon) --}} + @if($activeTab === 'importazione') +
+
+
+

Modulo Importazione MDB Gescon (Autorizzato ACL: import-gescon)

+

Seleziona e carica gli archivi MDB per la sincronizzazione differenziale dello studio selezionato.

+
+ + Modulo ACL Attivo + +
+ +
+
+ + + +
+
+ + + +
+
+
+ @endif +
diff --git a/skill-netgescon/ui-wireframes/amministratori-superadmin.md b/skill-netgescon/ui-wireframes/amministratori-superadmin.md index febe18e..a7dfd21 100644 --- a/skill-netgescon/ui-wireframes/amministratori-superadmin.md +++ b/skill-netgescon/ui-wireframes/amministratori-superadmin.md @@ -1,4 +1,6 @@ -# ASCII Wireframe - Gestione Amministratori Stabili (/admin-filament/superadmin/amministratori) +# ASCII Wireframe - Gestione Amministratori Stabili con Menu a Tab (/admin-filament/superadmin/amministratori) + +## 1. TAB 1: ELENCO AMMINISTRATORI CENSITI ```text +-------------------------------------------------------------------------------------------------------------------+ @@ -6,38 +8,70 @@ # ASCII Wireframe - Gestione Amministratori Stabili (/admin-filament/superadmin/ +-------------------------------------------------------------------------------------------------------------------+ | PATH: Home > Super Admin > Gestione Amministratori Stabili | +-------------------------------------------------------------------------------------------------------------------+ +| NAVIGAZIONE A TAB SEPARATI: | +| [ TAB 1: ELENCO AMMINISTRATORI (Attivo) ] [ TAB 2: SCHEDA & MODIFICA ] [ TAB 3: STABILI & FORNITORI ] | +| [ TAB 4: MODULO IMPORTAZIONE MDB (ACL: import-gescon) ] | ++-------------------------------------------------------------------------------------------------------------------+ | | | [ + NUOVO AMMINISTRATORE ] [ 🔄 IMPORTA DA STABILI.MDB ] [ 🔍 Cerca per Nome, Cognome, CF, Studio... ] | | | | +----+----------+---------------------------+---------------------------------+---------+------------+------------+ | | ID | CODICE | NOMINATIVO AMMINISTRATORE | STUDIO / INTESTAZIONE | STABILI | FE CASSETTO| AZIONI | | +----+----------+---------------------------+---------------------------------+---------+------------+------------+ -| | 13 | 00000001 | Tordini Cecilia | Studio Tordini Cecilia | 12 | [Attivo] | [Modifica] | -| | | | | | | | [⚡Impersona| -| | 14 | 00000002 | BARONE MICHELE | Studio BARONE MICHELE | 8 | [Attivo] | [Modifica] | -| | | | | | | | [⚡Impersona| -| | 15 | 00000003 | Conforti Ignazio Vittorio | Studio Conforti Ignazio | 14 | [Attivo] | [Modifica] | -| | | | | | | | [⚡Impersona| -| | 16 | 00000004 | Roscioli Anna Maria | Studio Roscioli Anna Maria | 6 | [Attivo] | [Modifica] | +| | 13 | 00000001 | Tordini Cecilia | Studio Tordini Cecilia | 12 | [Attivo] | [Apri Tab2]| +| | | | (cecilia.tordini@gmail.com)| | | | [⚡Impersona| +| | 14 | 00000002 | BARONE MICHELE | Studio BARONE MICHELE | 8 | [Attivo] | [Apri Tab2]| | | | | | | | | [⚡Impersona| +| | 15 | 00000003 | Conforti Ignazio Vittorio | Studio Conforti Ignazio | 14 | [Attivo] | [Apri Tab2]| +| | 16 | 00000004 | Roscioli Anna Maria | Studio Roscioli Anna Maria | 6 | [Attivo] | [Apri Tab2]| | +----+----------+---------------------------+---------------------------------+---------+------------+------------+ | Mostrati 4 di 4 amministratori censiti negli archivi di sistema | +-------------------------------------------------------------------------------------------------------------------+ -| DETTAGLIO ED EDITING SCHEDA AMMINISTRATORE (#13 TORDINI CECILIA) | +``` + +## 2. TAB 2: SCHEDA DETTAGLIO & EDITING IN-PLACE (AMMINISTRATORE SELEZIONATO: #13 TORDINI CECILIA) + +```text ++-------------------------------------------------------------------------------------------------------------------+ +| NAVIGAZIONE A TAB SEPARATI: | +| [ TAB 1: ELENCO AMMINISTRATORI ] [ TAB 2: SCHEDA & MODIFICA (Attivo: #13) ] [ TAB 3: STABILI & FORNITORI ] | ++-------------------------------------------------------------------------------------------------------------------+ +| DETTAGLIO SCHEDA AMMINISTRATORE (#13 TORDINI CECILIA) | +| | +| UTENTE DI SISTEMA COLLEGATO: cecilia.tordini@gmail.com (Ruoli: Amministratore, Admin) | | | -| [ Utente Collegato: cecilia.tordini@netgescon.it ] | | [ Nome: Cecilia ] [ Cognome: Tordini ] | | [ Denominazione Studio: Studio Tordini Cecilia ] | | [ Codice Fiscale Studio: TRDCCL74T52H501R ] [ Partita IVA: 01234567890 ] | | [ Indirizzo Studio: Viale delle Milizie 9a ] [ Città: ROMA ] [ CAP: 00192] | -| [ Email: cecilia.tordini@netgescon.it ] [ PEC: cecilia.tordini@pec.it ] | -| [ Telefono: 06-12345678 ] [ Cellulare: 335-1234567 ] | +| [ Email Login: cecilia.tordini@gmail.com ] [ PEC: cecilia.tordini@pec.it ] | +| [ Telefono Studio: 06-12345678 ] [ Cellulare Studio: 335-1234567 ] | | | | PERCORSI ARCHIVIO TENANT & BACKUP DEDICATO (CANONICO SYSTEM HASH): | | • Percorso Cartella Stabile: storage/app/private/amministratori/00000001/ | | • Percorso Documenti Stabile: storage/app/private/amministratori/00000001/documenti/ | | • Percorso Backup SQLite DB: storage/app/private/amministratori/00000001/database/backups/ | | | -| [ SALVA MODIFICHE ] [ ANNULLA ] [ ⚡ IMPERSONA AMMINISTRATORE ] | +| PULSANTI DI AZIONE COMPATTI (SENZA SCROLL ORIZZONTALE): | +| [ ✓ SALVA SCHEDA ] [ ⚡ IMPERSONA SENZA PASSWORD ] [ 📧 INVIA CREDIENZIALI ] [ 🔑 RESET PASSWORD ] | ++-------------------------------------------------------------------------------------------------------------------+ +``` + +## 3. TAB 4: MODULO IMPORTAZIONE LEGACY MDB (SCOPED ALL'AMMINISTRATORE - ACL: import-gescon) + +```text ++-------------------------------------------------------------------------------------------------------------------+ +| NAVIGAZIONE A TAB SEPARATI: | +| [ TAB 1: ELENCO ] [ TAB 2: SCHEDA ] [ TAB 3: STABILI & FORNITORI ] [ TAB 4: MODULO IMPORTAZIONE MDB (Attivo) ]| ++-------------------------------------------------------------------------------------------------------------------+ +| SELEZIONE E CARICAMENTO ARCHIVI LEGACY MDB PER LO STUDIO: TORDINI CECILIA (#13) | +| | +| 1. FILE ARCHIVIO STABILI: [ /mnt/gescon-archives/gescon/dbc/Stabili.mdb ▾ ] [ 🔄 AVVIA IMPORT STABILI ] | +| 2. FILE ARCHIVIO FORNITORI: [ /mnt/gescon-archives/gescon/dbc/Fornitori.mdb ▾ ] [ 🔄 AVVIA IMPORT FORNITORI ] | +| | +| STATO IMPORTAZIONE ARCHIVIO STUDIO TORDINI CECILIA: | +| • Stabili importati e collegati: 12 stabili condominiali | +| • Fornitori accreditati per lo studio: 387 ditte/professionisti (Trib 1019/1020 ok) | +| • Modalità Coesistenza: Dual-Run Incrementale (Sorgente autoritativa: Legacy MDB -> NetGescon DB) | +-------------------------------------------------------------------------------------------------------------------+ ```