📋 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
8.2 KiB
8.2 KiB
📘 MANUALE MANUTENZIONE - NetGescon Unified Platform
🎯 PANORAMICA ARCHITETTURA
Struttura Directory di Lavoro
/home/michele/netgescon/netgescon-laravel/ (Directory principale Linux)
├── app/Http/Controllers/Admin/ # Controller amministrazione
├── resources/views/admin/ # View amministrazione
├── resources/views/components/ # Componenti riutilizzabili
├── resources/views/layouts/ # Layout principali
├── routes/web.php # Definizione route
└── docs/ # Documentazione progetto
Sistema Multi-Tenant & Multi-Ruolo
- Utenti 8 caratteri: Identificativo univoco per amministratore
- Cartelle dedicate: Ogni admin ha la sua directory isolata
- Database separati: Possibilità di separare i dati per amministratore
- Backup distribuiti: Google Drive, Microsoft, NAS locale
- Migrazione facile: Come VM Proxmox, portabilità completa
🔧 GUIDE OPERATIVE
1. MODIFICARE IL MENU SIDEBAR
File da modificare: /resources/views/components/menu/sidebar-dynamic.blade.php
Struttura Menu:
// Aggiungere nuovo elemento menu
@if($userPermissions['NUOVA_SEZIONE'] ?? false)
<li class="nav-item">
<a href="#submenu" class="nav-link collapse-toggle dashboard-nav-link"
data-bs-toggle="collapse" data-section="NUOVA_SEZIONE">
<i class="fas fa-ICON me-2"></i>
<span>Nome Sezione</span>
<i class="fas fa-chevron-down ms-auto collapse-icon"></i>
</a>
<div class="collapse" id="submenu">
<ul class="nav flex-column ms-3">
<li class="nav-item">
<a href="#" class="nav-link dashboard-nav-link" data-section="NUOVA_SEZIONE">
<i class="fas fa-list me-2"></i>Lista
</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link dashboard-nav-link" data-action="create-ITEM">
<i class="fas fa-plus me-2"></i>Nuovo
</a>
</li>
</ul>
</div>
</li>
@endif
Aggiungere gestione JavaScript: In /admin/dashboard.blade.php:
case 'NUOVA_SEZIONE':
title = 'Gestione XXXX';
icon = 'fas fa-ICON';
loadNuovaSezioneContent();
break;
2. AGGIUNGERE NUOVA DASHBOARD SEZIONE
Step 1: Aggiornare /admin/dashboard.blade.php
function loadNuovaSezioneContent() {
const content = `
<div class="row mb-3">
<div class="col-md-6">
<h6 class="text-muted">Panoramica XXXXX</h6>
</div>
<div class="col-md-6 text-end">
<button type="button" class="btn btn-primary btn-sm">
<i class="fas fa-plus me-2"></i>Nuovo XXXXX
</button>
</div>
</div>
<!-- Contenuto specifico della sezione -->
`;
$('#dynamic-content-body').html(content);
}
Step 2: Aggiungere route in /routes/web.php
Route::middleware(['role:admin|amministratore|super-admin'])->prefix('admin')->name('admin.')->group(function () {
Route::resource('NUOVA_RISORSA', NuovoController::class);
});
3. CREARE NUOVO FORM AJAX
Step 1: Creare controller method
public function createForm() {
return view('admin.SEZIONE._form-bootstrap');
}
Step 2: Aggiungere route specifica
Route::get('SEZIONE/create/form', [Controller::class, 'createForm'])->name('SEZIONE.create.form');
Step 3: Creare view form con struttura standard
<!-- Form Header per AJAX -->
<div class="d-flex align-items-center justify-content-between mb-3">
<div>
<h4 class="text-primary mb-1">
<i class="fas fa-plus-circle me-2"></i>Nuovo XXXXX
</h4>
<p class="text-muted mb-0 small">Descrizione form</p>
</div>
</div>
<!-- Form con Tab Bootstrap -->
<div class="card">
<!-- Tab Navigation -->
<!-- Tab Content -->
<!-- Footer con pulsanti -->
</div>
4. GESTIRE PERMESSI UTENTE
File: /app/Helpers/MenuHelper.php
public static function canUserAccessMenu($menuName) {
// Logica permessi per $menuName
return $hasPermission;
}
Utilizzo nelle view:
@if(App\Helpers\MenuHelper::canUserAccessMenu('SEZIONE'))
<!-- Contenuto visibile solo se ha permessi -->
@endif
📊 TABELLE DATABASE
Tabelle Principali
stabili- Dati stabili/condominiunita_immobiliari- Unità immobiliarisoggetti- Anagrafica unificata (condomini, proprietari, etc.)ruoli_soggetti- Ruoli degli utenti nel sistemapermessi- Sistema permessi granulare
Strutture JSON
stabili.palazzine- JSON array palazzinestabili.locali- JSON array locali serviziostabili.banche- JSON array conti bancari multipli
🚀 PROCEDURE STANDARD
Aggiungere Nuova Funzionalità
- Leggere questo manuale per capire dove intervenire
- Identificare la sezione (admin, super-admin, etc.)
- Creare/modificare route in
web.php - Implementare controller in
app/Http/Controllers/Admin/ - Creare view in
resources/views/admin/SEZIONE/ - Aggiornare sidebar se necessario
- Aggiungere JavaScript per navigazione AJAX
- Testare permessi con diversi ruoli utente
- Aggiornare documentazione
Debugging Route
cd /home/michele/netgescon/netgescon-laravel
php artisan route:clear
php artisan route:list | grep "NOME_ROUTE"
Cache Management
php artisan cache:clear
php artisan view:clear
php artisan config:clear
php artisan route:clear
🔒 SICUREZZA & RUOLI
Ruoli Utente
super-admin- Accesso completo, import dati, configurazioni sistemaadmin/amministratore- Gestione condomini assegnaticollaboratore- Assistenza limitatacondomino- Accesso ai propri dati
Middleware Protezione
Route::middleware(['role:super-admin'])->group(function () {
// Solo super-admin può importare dati fiscali
});
📁 ORGANIZZAZIONE FILE
Controller Organization
app/Http/Controllers/
├── Admin/ # Controllers amministrazione
├── SuperAdmin/ # Controllers super amministrazione
├── Api/ # API controllers
└── Auth/ # Controllers autenticazione
View Organization
resources/views/
├── admin/ # Dashboard e funzioni admin
├── superadmin/ # Funzioni super admin
├── components/ # Componenti riutilizzabili
├── layouts/ # Layout principali
└── auth/ # Login/registrazione
🎨 STANDARDS UI/UX
Colori Sezioni
- Stabili:
bg-primary(blu) - Condomini:
bg-success(verde) - Tickets:
bg-warning(giallo) - Contabilità:
bg-info(azzurro) - Urgenze:
bg-danger(rosso)
Icone Standard
- Stabili:
fas fa-building - Condomini:
fas fa-users - Tickets:
fas fa-ticket-simple - Contabilità:
fas fa-calculator - Banche:
fas fa-university
Pattern Form
- Header con titolo e descrizione
- Tab per organizzare campi
- Footer con pulsanti azione
- JavaScript per gestione dinamica
- Validazione client e server
📋 PROSSIMI SVILUPPI
Milestone Immediate
- Importazione Dati Legacy - Sistema import dal vecchio gestionale
- Sistema Stampe - Etichette faldoni, chiavi, documenti
- Gestione Documenti - Upload e organizzazione documenti per stabile
- Dashboard Mobile - Ottimizzazione per smartphone/tablet
Roadmap Futura
- Multi-Tenant Completo - Separazione database per amministratore
- Sincronizzazione Cloud - Backup automatici distribuiti
- API REST - Integrazione con sistemi esterni
- Mobile App - App nativa per gestione mobile
📝 Mantenere sempre aggiornato questo documento ad ogni modifica significativa!