netgescon-master/docs/archived/ISTRUZIONI-RIPRISTINO-COMPLETO.md
Pikappa2 480e7eafbd 🎯 NETGESCON - Setup iniziale repository completo
📋 Commit iniziale con:
-  Documentazione unificata in docs/
-  Codice Laravel in netgescon-laravel/
-  Script automazione in scripts/
-  Configurazione sync rsync
-  Struttura organizzata e pulita

🔄 Versione: 2025.07.19-1644
🎯 Sistema pronto per Git distribuito
2025-07-19 16:44:47 +02:00

281 lines
9.3 KiB
Markdown

# 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`