# ๐ 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**:
```php
// Aggiungere nuovo elemento menu
@if($userPermissions['NUOVA_SEZIONE'] ?? false)
Nome Sezione
@endif
```
**Aggiungere gestione JavaScript**: In `/admin/dashboard.blade.php`:
```javascript
case 'NUOVA_SEZIONE':
title = 'Gestione XXXX';
icon = 'fas fa-ICON';
loadNuovaSezioneContent();
break;
```
### **2. AGGIUNGERE NUOVA DASHBOARD SEZIONE**
**Step 1**: Aggiornare `/admin/dashboard.blade.php`
```javascript
function loadNuovaSezioneContent() {
const content = `
Panoramica XXXXX
`;
$('#dynamic-content-body').html(content);
}
```
**Step 2**: Aggiungere route in `/routes/web.php`
```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
```php
public function createForm() {
return view('admin.SEZIONE._form-bootstrap');
}
```
**Step 2**: Aggiungere route specifica
```php
Route::get('SEZIONE/create/form', [Controller::class, 'createForm'])->name('SEZIONE.create.form');
```
**Step 3**: Creare view form con struttura standard
```php
Nuovo XXXXX
Descrizione form
```
### **4. GESTIRE PERMESSI UTENTE**
**File**: `/app/Helpers/MenuHelper.php`
```php
public static function canUserAccessMenu($menuName) {
// Logica permessi per $menuName
return $hasPermission;
}
```
**Utilizzo nelle view**:
```php
@if(App\Helpers\MenuHelper::canUserAccessMenu('SEZIONE'))
@endif
```
---
## ๐ **TABELLE DATABASE**
### **Tabelle Principali**
- `stabili` - Dati stabili/condomini
- `unita_immobiliari` - Unitร immobiliari
- `soggetti` - Anagrafica unificata (condomini, proprietari, etc.)
- `ruoli_soggetti` - Ruoli degli utenti nel sistema
- `permessi` - Sistema permessi granulare
### **Strutture JSON**
- `stabili.palazzine` - JSON array palazzine
- `stabili.locali` - JSON array locali servizio
- `stabili.banche` - JSON array conti bancari multipli
---
## ๐ **PROCEDURE STANDARD**
### **Aggiungere Nuova Funzionalitร **
1. **Leggere questo manuale** per capire dove intervenire
2. **Identificare la sezione** (admin, super-admin, etc.)
3. **Creare/modificare route** in `web.php`
4. **Implementare controller** in `app/Http/Controllers/Admin/`
5. **Creare view** in `resources/views/admin/SEZIONE/`
6. **Aggiornare sidebar** se necessario
7. **Aggiungere JavaScript** per navigazione AJAX
8. **Testare permessi** con diversi ruoli utente
9. **Aggiornare documentazione**
### **Debugging Route**
```bash
cd /home/michele/netgescon/netgescon-laravel
php artisan route:clear
php artisan route:list | grep "NOME_ROUTE"
```
### **Cache Management**
```bash
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 sistema
- `admin/amministratore` - Gestione condomini assegnati
- `collaboratore` - Assistenza limitata
- `condomino` - Accesso ai propri dati
### **Middleware Protezione**
```php
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**
1. **Importazione Dati Legacy** - Sistema import dal vecchio gestionale
2. **Sistema Stampe** - Etichette faldoni, chiavi, documenti
3. **Gestione Documenti** - Upload e organizzazione documenti per stabile
4. **Dashboard Mobile** - Ottimizzazione per smartphone/tablet
### **Roadmap Futura**
1. **Multi-Tenant Completo** - Separazione database per amministratore
2. **Sincronizzazione Cloud** - Backup automatici distribuiti
3. **API REST** - Integrazione con sistemi esterni
4. **Mobile App** - App nativa per gestione mobile
---
**๐ Mantenere sempre aggiornato questo documento ad ogni modifica significativa!**