📋 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
8.2 KiB
Markdown
281 lines
8.2 KiB
Markdown
# 📘 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)
|
|
<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`:
|
|
```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 = `
|
|
<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`
|
|
```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
|
|
<!-- 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`
|
|
```php
|
|
public static function canUserAccessMenu($menuName) {
|
|
// Logica permessi per $menuName
|
|
return $hasPermission;
|
|
}
|
|
```
|
|
|
|
**Utilizzo nelle view**:
|
|
```php
|
|
@if(App\Helpers\MenuHelper::canUserAccessMenu('SEZIONE'))
|
|
<!-- Contenuto visibile solo se ha permessi -->
|
|
@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!**
|