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

9.3 KiB

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

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

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

// 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

// 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

// 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

// 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

// 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

// 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

# 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

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)

# 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