📋 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
281 lines
9.3 KiB
Markdown
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`
|