# ISTRUZIONI COMPLETE PER RIPRISTINO SISTEMA NETGESCON ## SITUAZIONE ATTUALE Il sistema è tornato a uno stato precedente con perdita delle seguenti funzionalità: - Dashboard unificata con navigazione AJAX - Menu stabili nella sidebar - Funzionalità SuperAdmin avanzate - Sistema gestione archivi comuni italiani ## RIPRISTINO IMMEDIATO - SEQUENZA OBBLIGATORIA ### 1. PULIZIA CACHE E VERIFICHE ```bash cd u:\home\michele\netgescon\netgescon-laravel php artisan cache:clear php artisan config:clear php artisan route:clear php artisan view:clear php artisan optimize ``` ### 2. VERIFICA DATABASE E UTENTI ```bash # Verifica utenti esistenti php artisan tinker >>> App\Models\User::all()->pluck('email', 'name') >>> exit # Crea/aggiorna utente SuperAdmin php artisan db:seed --class=SuperAdminSeeder ``` ### 3. VERIFICA FILE PRINCIPALI Controllare che esistano questi file con contenuto corretto: **File Dashboard**: `resources/views/admin/dashboard.blade.php` - Deve usare `` - Deve avere navigazione AJAX - Deve mostrare cards cliccabili **File Sidebar**: `resources/views/components/menu/sidebar-dynamic.blade.php` - Deve avere sezioni per stabili - Deve avere menu SuperAdmin - Deve avere data-section per AJAX **File Route**: `routes/web.php` - Route `/dashboard` -> SecureDashboardController::index - Route gruppo `admin` con stabili - Route gruppo `superadmin` con archivi ### 4. CONTROLLARE LAYOUT ATTIVO Il sistema DEVE usare: `resources/views/components/layout/universal.blade.php` ### 5. VERIFICARE NAVIGAZIONE AJAX Nel file dashboard deve esserci: ```javascript // Gestione click card statistiche $('.dashboard-card[data-section]').on('click', function() { var section = $(this).data('section'); if (section) { showDynamicContent(section); } }); // Gestione click sidebar con AJAX $(document).on('click', '.dashboard-nav-link[data-section]', function(e) { e.preventDefault(); var section = $(this).data('section'); var action = $(this).data('action') || 'index'; if (section) { showDynamicContent(section, action); } }); ``` ## RIPRISTINO STEP-BY-STEP ### STEP 1: Verifica Layout Universal ```php // File: resources/views/components/layout/universal.blade.php // DEVE avere: - Header con logo e menu utente - Sidebar con - Area content dinamica - Bootstrap 5 + FontAwesome ``` ### STEP 2: Dashboard Admin Corretta ```php // File: resources/views/admin/dashboard.blade.php // INIZIO FILE: // CARDS CLICCABILI:
{{ $stats['stabili_totali'] ?? 0 }}
Stabili gestiti
// AREA DINAMICA AJAX: ``` ### STEP 3: Sidebar Con Menu Stabili ```php // File: resources/views/components/menu/sidebar-dynamic.blade.php // Menu Stabili: @if($userPermissions['stabili'] ?? false) @endif ``` ### STEP 4: Menu SuperAdmin ```php // Menu SuperAdmin nella sidebar: @if($userRole === 'super-admin' || ($userPermissions['super_admin'] ?? false)) @endif ``` ### STEP 5: Route Corrette ```php // File: routes/web.php // Dashboard principale Route::get('/dashboard', [SecureDashboardController::class, 'index'])->name('dashboard'); // Gruppo admin Route::prefix('admin')->name('admin.')->group(function () { // Stabili con navigazione AJAX Route::get('/stabili', [StabileController::class, 'index'])->name('stabili.index'); Route::get('/stabili/create', [StabileController::class, 'create'])->name('stabili.create'); Route::post('/stabili', [StabileController::class, 'store'])->name('stabili.store'); Route::get('/stabili/{stabile}', [StabileController::class, 'show'])->name('stabili.show'); }); // Gruppo SuperAdmin Route::prefix('superadmin')->name('superadmin.')->group(function () { Route::get('/archivi', [ArchiviSistemaController::class, 'index'])->name('archivi.index'); Route::get('/archivi/comuni', [ArchiviSistemaController::class, 'comuniItaliani'])->name('archivi.comuni'); Route::post('/archivi/import', [ArchiviSistemaController::class, 'importZip'])->name('archivi.import'); }); ``` ## COMANDI DI VERIFICA ### Verifica File Esistenti ```bash # Verifica file principali ls -la resources/views/admin/dashboard.blade.php ls -la resources/views/components/layout/universal.blade.php ls -la resources/views/components/menu/sidebar-dynamic.blade.php # Verifica controller ls -la app/Http/Controllers/SecureDashboardController.php ls -la app/Http/Controllers/Admin/StabileController.php ``` ### Verifica Database ```bash php artisan tinker >>> App\Models\User::where('email', 'superadmin@example.com')->first() >>> App\Models\Stabile::count() >>> exit ``` ### Test Navigazione 1. Login con superadmin@example.com / password 2. Verificare che appaia dashboard con layout corretto 3. Verificare sidebar con menu stabili e SuperAdmin 4. Testare click su card "Stabili" -> deve caricare contenuto AJAX 5. Testare click menu sidebar "Gestione Stabili" -> deve caricare AJAX ## TROUBLESHOOTING ### Se Dashboard non si carica correttamente: 1. Verificare route in `routes/web.php` linea 47 2. Verificare SecureDashboardController ritorna view corretta 3. Pulire cache: `php artisan optimize:clear` ### Se Sidebar non ha menu stabili: 1. Verificare variabile `$userPermissions` nel controller 2. Verificare file sidebar-dynamic.blade.php 3. Verificare che user abbia ruolo corretto ### Se AJAX non funziona: 1. Verificare presenza jQuery e Bootstrap JS nel layout 2. Verificare data-section nelle card e menu 3. Verificare route AJAX nel controller StabileController ### Se SuperAdmin non appare: 1. Verificare utente superadmin@example.com esista 2. Verificare `$userRole === 'super-admin'` nel controller 3. Verificare menu SuperAdmin nella sidebar ## SEQUENZA DI RIPRISTINO COMPLETO (ESEGUIRE IN ORDINE) ```bash # 1. Pulizia php artisan cache:clear && php artisan config:clear && php artisan route:clear && php artisan view:clear # 2. Database php artisan migrate:fresh --seed php artisan db:seed --class=SuperAdminSeeder # 3. Ottimizzazione php artisan optimize # 4. Test php artisan serve ``` Quindi accedere a: http://localhost:8000/dashboard Con credenziali: superadmin@example.com / password ## NOTE IMPORTANTI - Il layout DEVE essere `x-layout.universal` - La sidebar DEVE avere `` - Le cards DEVONO avere `data-section` per AJAX - I link sidebar DEVONO avere `dashboard-nav-link` class - Il controller DEVE passare `$userRole` e `$userPermissions`