# 🔧 INTERFACCIA UNICA - TROUBLESHOOTING NETGESCON

> **Manual operativo** per risoluzione problemi interfaccia, layout e dashboard  
> **🔗 Master:** [`../../00-INDICE-MASTER-NETGESCON.md`](../../00-INDICE-MASTER-NETGESCON.md)  
> **📅 Aggiornato:** 15/07/2025

---

## 🚨 **PROBLEMI RISOLTI - QUICK REFERENCE**

### 1️⃣ **Dashboard si sposta dopo refresh** ✅ RISOLTO
**Problema:** Layout che si sposta in basso dopo aggiornamento pagina  
**Causa:** Loading screen invasivo in `universal.blade.php`  
**Fix:** Commentata riga `@include('components.layout.loading-screen')`  
**File:** `resources/views/components/layout/universal.blade.php`

### 2️⃣ **View [dashboard.guest] not found** ✅ RISOLTO  
**Problema:** Errore view mancante per dashboard guest  
**Fix:** Creata `resources/views/dashboard/guest.blade.php`  
**Content:** Layout base con @extends('layouts.app')

### 3️⃣ **Form stabili non si visualizza** ✅ RISOLTO
**Problema:** Maschera inserimento stabili non visibile, interfaccia rotta  
**Causa:** Form mista Bootstrap/Tailwind, layout tab non funzionante  
**Fix:** Rifatta completamente form con layout tab Bootstrap puro  
**File:** `resources/views/admin/stabili/_form.blade.php`

### 4️⃣ **Ruolo 'condomino' mancante** ✅ RISOLTO
**Problema:** Errore ruolo condomino non trovato  
**Fix:** Seeder ruoli aggiornato e eseguito  
**Command:** `php artisan db:seed --class=RoleSeeder`

### 5️⃣ **Loading screen invasivo** ✅ RISOLTO
**Problema:** Schermata loading copre tutta l'interfaccia  
**Fix:** Sostituito con progress bar footer non invasiva  
**File:** `resources/views/components/menu/sections/footer.blade.php`

---

## 🏢 **FORM STABILI - DETTAGLIO ARCHITETTURA**

### 📋 **Struttura Tab Implementate**

| Tab | Contenuto | Status |
|-----|-----------|--------|
| 🏠 **Dati Generali** | Denominazione, codice stabile, CF, P.IVA, note | ✅ Completo |
| 📍 **Indirizzo** | Via, città, CAP, provincia | ✅ Completo |
| 🏢 **Palazzine** | Gestione multi-palazzine tabella Excel-like | ✅ Completo |
| 🏛️ **Dati Catastali** | Foglio, mappale, categoria, piani/interni evidenziati | ✅ Completo |
| 🏦 **Dati Bancari** | IBAN principale/secondario, banche, filiali | ✅ Completo |
| 👤 **Amministratore** | Nome, email, date nomina/scadenza | ✅ Completo |
| 🏪 **Locali Servizio** | Cantina, portiere, contatori, caldaia, biciclette | ✅ Completo |

### 🏗️ **Tab Palazzine - Gestione Multi-Palazzine**

**Funzionalità:**
- ✅ Tabella dinamica stile Excel
- ✅ Aggiungi/Rimuovi righe con bottoni
- ✅ Campi: Palazzina, Indirizzo, Scala, Interni, Piani
- ✅ Dati esempio precaricati (Via Germanico, Via Catone, Via Gracchi)

**Dati Esempio:**
```
PALAZZINA | INDIRIZZO          | SCALA | INTERNI | PIANI
    1     | Via Germanico 85   |   A   |    8    |   4
    1     | Via Germanico 85   |   B   |    6    |   4  
    2     | Via Catone 34      |   A   |   12    |   4
    2     | Via Catone 34      |   B   |   12    |   4
    2     | Via Catone 34      |   C   |   12    |   4
    3     | Via Gracchi 32     |   A   |   10    |   4
    3     | Via Gracchi 32     |   B   |   10    |   4
```

### 🏛️ **Tab Dati Catastali - Evidenziazione**

**Caratteristiche:**
- ✅ Alert warning per evidenziare importanza
- ✅ Card dedicata per piani/interni con badge
- ✅ Layout in evidenza per dati ufficiali

**Piani/Interni Evidenziati:**
```
🏢 PIANI E INTERNI
Piano 1: [INTERNI 12]  Piano 2: [INTERNI 34]
Piano 3: [INTERNI 56]  Piano 4: [INTERNI 78]
```

### 🏪 **Tab Locali di Servizio**

**Tipi Locali Supportati:**
- ✅ Cantina  
- ✅ Appartamento Portiere
- ✅ Locale Contatori
- ✅ Locale Caldaia  
- ✅ Locale Biciclette
- ✅ Altro (personalizzabile)

**Campi per Locale:**
- **Tipo:** Dropdown con categorie predefinite
- **Descrizione:** Testo libero (es. "Cantina 1 e 2")
- **Ubicazione:** Piano/posizione (es. "Piano Interrato")

### 💾 **Database - Campi JSON**

**Tabella `stabili` - Nuovi Campi:**
```sql
palazzine_data JSON        -- Array palazzine
locali_servizio JSON       -- Array locali
iban_principale VARCHAR    -- IBAN primario
banca_principale VARCHAR   -- Nome banca
amministratore_nome VARCHAR -- Nome amministratore
foglio VARCHAR            -- Catastale
mappale VARCHAR           -- Catastale
categoria VARCHAR         -- Catastale
rendita_catastale DECIMAL -- Catastale
```

---

## 🔧 **TROUBLESHOOTING SPECIFICO**

### ❌ **Form stabili non funziona**

**Sintomi:**
- Tab non responsive
- Campi non visibili  
- JavaScript errors
- Layout rotto

**Diagnosi:**
```bash
# Controlla il file form
cat resources/views/admin/stabili/_form.blade.php | head -20

# Verifica Bootstrap loaded
curl http://localhost:8000 | grep bootstrap

# Controlla errori JavaScript 
# (F12 -> Console nel browser)
```

**Fix:**
```bash
# Se la form è rotta, ripristina da backup
cp resources/views/admin/stabili/_form.blade.php.backup resources/views/admin/stabili/_form.blade.php

# Oppure ricrea la form
php artisan make:view admin.stabili._form
```

### ❌ **Palazzine non salvano**

**Sintomi:**
- Dati palazzine non persistono
- Errore validazione array
- JSON malformato

**Diagnosi:**
```bash
# Controlla migration
php artisan migrate:status | grep banking

# Verifica colonna JSON
php artisan tinker
> Schema::hasColumn('stabili', 'palazzine_data')
```

**Fix:**
```bash
# Riesegui migrazione se necessario
php artisan migrate:fresh --seed

# Controlla model cast
grep -n "palazzine_data" app/Models/Stabile.php
```

### ❌ **JavaScript tab non funziona**

**Sintomi:**
- Tab non clickable
- Contenuto non si switcha
- Console errors

**Diagnosi:**
```javascript
// Nel browser F12 -> Console
document.querySelectorAll('[data-bs-toggle="tab"]')
typeof bootstrap
```

**Fix:**
```html
<!-- Assicurati Bootstrap JS sia caricato -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>

<!-- Inizializza tab manualmente se necessario -->
<script>
document.querySelectorAll('[data-bs-toggle="tab"]').forEach(tab => {
    new bootstrap.Tab(tab)
});
</script>
```

---

## 📋 **CHECKLIST VALIDAZIONE FORM STABILI**

### ✅ **Pre-Test**
- [ ] Server Laravel running su http://localhost:8000
- [ ] Login admin funzionante (admin@example.com / password)  
- [ ] Menu Stabili accessibile
- [ ] Nessun errore 500 in laravel.log

### ✅ **Test Interfaccia**
- [ ] Tab visibili e clickable
- [ ] Ogni tab mostra contenuto corretto
- [ ] Font compatto e leggibile
- [ ] Nessun overflow o scrollbar indesiderati

### ✅ **Test Palazzine**
- [ ] Tabella visibile con dati esempio
- [ ] Bottone "Aggiungi Palazzina" funziona
- [ ] Bottone "Rimuovi" (trash) funziona  
- [ ] Impossibile rimuovere ultima riga
- [ ] Validazione campi numerici (interni/piani)

### ✅ **Test Locali**
- [ ] Dropdown tipo locale funziona
- [ ] Bottone "Aggiungi Locale" funziona
- [ ] Campi descrizione/ubicazione editabili
- [ ] Rimozione locali funziona

### ✅ **Test Salvataggio**
- [ ] Form submit senza errori
- [ ] Dati persistono nel database
- [ ] JSON palazzine_data ben formato
- [ ] JSON locali_servizio ben formato
- [ ] Redirect corretto dopo salvataggio

### ✅ **Test Dati Catastali**
- [ ] Alert warning visibile
- [ ] Card piani/interni in evidenza
- [ ] Badge colorate per interni
- [ ] Campi catastali editabili

---

## 🔗 **RIFERIMENTI E LINK**

### 📁 **File Critici**
- **Form:** `resources/views/admin/stabili/_form.blade.php`
- **Controller:** `app/Http/Controllers/Admin/StabileController.php`
- **Model:** `app/Models/Stabile.php`
- **Migration:** `database/migrations/2025_07_15_063452_add_banking_and_palazzine_fields_to_stabili_table.php`

### 🔧 **Comandi Utili**
```bash
# Restart server
php artisan serve --host=0.0.0.0 --port=8000

# Check migrations
php artisan migrate:status

# Clear cache
php artisan optimize:clear

# Test database
php artisan tinker
```

### 📞 **Link Documentazione**
- **Master Index:** [`../../00-INDICE-MASTER-NETGESCON.md`](../../00-INDICE-MASTER-NETGESCON.md)
- **Quick Reference:** [`../QUICK-REFERENCE-CARD.md`](../QUICK-REFERENCE-CARD.md)
- **Log Sviluppo:** [`../LOG-SVILUPPO.md`](../LOG-SVILUPPO.md)

---

> **💡 TIP:** Questo manual viene aggiornato ad ogni fix. Documenta sempre nuovi problemi!  
> **🔄 Mantieni aggiornato** con ogni modifica alla form stabili.

---

**🔧 Interfaccia Unica Troubleshooting** - NetGescon System  
**📧 Support:** admin@netgescon.it | **🌐 URL:** http://localhost:8000
