# 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 `<x-layout.universal>`
- 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 <x-menu.sidebar-dynamic />
- Area content dinamica
- Bootstrap 5 + FontAwesome
```

### STEP 2: Dashboard Admin Corretta
```php
// File: resources/views/admin/dashboard.blade.php
// INIZIO FILE:
<x-layout.universal pageTitle="Dashboard Admin" showBreadcrumb="true" showSidebar="true">

// CARDS CLICCABILI:
<div class="dashboard-card cursor-pointer" data-section="stabili">
    <div class="card h-100">
        <div class="card-body">
            <div class="row align-items-center">
                <div class="col">
                    <div class="widget-icon bg-primary">
                        <i class="fas fa-building"></i>
                    </div>
                </div>
                <div class="col-auto">
                    <div class="widget-stats">{{ $stats['stabili_totali'] ?? 0 }}</div>
                    <div class="text-muted">Stabili gestiti</div>
                </div>
            </div>
        </div>
    </div>
</div>

// AREA DINAMICA AJAX:
<div id="dynamic-content-area" style="display: none;">
    <div id="dynamic-content-container">
        <!-- Contenuto caricato via AJAX -->
    </div>
</div>
```

### STEP 3: Sidebar Con Menu Stabili
```php
// File: resources/views/components/menu/sidebar-dynamic.blade.php
// Menu Stabili:
@if($userPermissions['stabili'] ?? false)
<li class="nav-item">
    <a href="#stabiliSubmenu" class="nav-link collapse-toggle dashboard-nav-link" 
       data-bs-toggle="collapse" role="button" aria-expanded="false" data-section="stabili">
        <i class="fas fa-building me-2"></i>
        <span>Gestione Stabili</span>
        <i class="fas fa-chevron-right collapse-icon"></i>
    </a>
    <div class="collapse" id="stabiliSubmenu">
        <ul class="nav flex-column ms-3">
            <li class="nav-item">
                <a href="#" class="nav-link dashboard-nav-link" data-section="stabili" data-action="index">
                    <i class="fas fa-list me-2"></i>Elenco Stabili
                </a>
            </li>
            <li class="nav-item">
                <a href="#" class="nav-link dashboard-nav-link" data-section="stabili" data-action="create">
                    <i class="fas fa-plus me-2"></i>Nuovo Stabile
                </a>
            </li>
        </ul>
    </div>
</li>
@endif
```

### STEP 4: Menu SuperAdmin
```php
// Menu SuperAdmin nella sidebar:
@if($userRole === 'super-admin' || ($userPermissions['super_admin'] ?? false))
<li class="nav-item">
    <a href="#superAdminSubmenu" class="nav-link collapse-toggle" 
       data-bs-toggle="collapse" role="button" aria-expanded="false">
        <i class="fas fa-crown me-2 text-warning"></i>
        <span>SuperAdmin</span>
        <i class="fas fa-chevron-right collapse-icon"></i>
    </a>
    <div class="collapse" id="superAdminSubmenu">
        <ul class="nav flex-column ms-3">
            <li class="nav-item">
                <a href="#" class="nav-link dashboard-nav-link" data-section="archivi" data-action="index">
                    <i class="fas fa-database me-2"></i>Archivi Sistema
                </a>
            </li>
            <li class="nav-item">
                <a href="#" class="nav-link dashboard-nav-link" data-section="archivi" data-action="comuni">
                    <i class="fas fa-map-marked-alt me-2"></i>Comuni Italiani
                </a>
            </li>
        </ul>
    </div>
</li>
@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 `<x-menu.sidebar-dynamic />`
- Le cards DEVONO avere `data-section` per AJAX
- I link sidebar DEVONO avere `dashboard-nav-link` class
- Il controller DEVE passare `$userRole` e `$userPermissions`
