<?php

use App\Http\Controllers\Admin\DashboardController;
use App\Http\Controllers\SecureDashboardController;
use App\Http\Controllers\SuperAdmin\UserController as SuperAdminUserController;
use App\Http\Controllers\SuperAdmin\CategoriaTicketController;
use App\Http\Controllers\SuperAdmin\AmministratoreController as SuperAdminAmministratoreController;
use App\Http\Controllers\SuperAdmin\ComuniItalianiController;
use App\Http\Controllers\Admin\StabileController;
use App\Http\Controllers\Admin\SoggettoController;
use App\Http\Controllers\Admin\UnitaImmobiliareController;
use App\Http\Controllers\Admin\FornitoreController;
use App\Http\Controllers\Admin\TicketController;
use App\Http\Controllers\Admin\ContabilitaController;
use App\Http\Controllers\Admin\DocumentoController;
use App\Http\Controllers\Admin\DocumentiController;
use App\Http\Controllers\Admin\PreventivoController;
use App\Http\Controllers\Admin\BilancioController;
use App\Http\Controllers\Admin\VoceSpesaController;
use App\Http\Controllers\Admin\RipartizioneSpesaController;
use App\Http\Controllers\Admin\PianoRateizzazioneController;
use App\Http\Controllers\Admin\RataController;
use App\Http\Controllers\Admin\AnagraficaCondominusController;
use App\Http\Controllers\Admin\TabellaMillesimaleController;
use App\Http\Controllers\Admin\DirittoRealeController;
use App\Http\Controllers\Admin\ContrattoLocazioneController;
use App\Http\Controllers\Admin\AssembleaController;
use App\Http\Controllers\Admin\GestioneController;
use App\Http\Controllers\Admin\AllegatoController;
use App\Http\Controllers\Condomino\DashboardController as CondominoDashboardController;
use App\Http\Controllers\Condomino\TicketController as CondominoTicketController;
use App\Http\Controllers\Condomino\DocumentoController as CondominoDocumentoController;
use App\Http\Controllers\Condomino\UnitaController as CondominoUnitaController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\Admin\ImpostazioniController;
use App\Http\Controllers\Admin\ApiTokenController;
use App\Http\Controllers\Admin\RubricaController;
use App\Http\Controllers\Admin\BancaController;
use App\Http\Controllers\Admin\MovimentoBancarioController;
use App\Http\Controllers\Admin\UserController;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;

// --- ROUTE SICURE (URLs GENERICI) ---
Route::middleware(['auth', 'verified'])->group(function () {
    
    // Dashboard generica che reindirizza in base al ruolo
    Route::get('/dashboard', [SecureDashboardController::class, 'index'])->name('dashboard');
    
    // Panel generico che reindirizza alle funzionalità appropriate
    Route::get('/panel', function() {
        $user = auth()->user();
        if ($user->hasRole('super-admin')) {
            return redirect()->route('superadmin.dashboard');
        } elseif ($user->hasRole(['admin', 'amministratore'])) {
            return redirect()->route('admin.dashboard');
        } elseif ($user->hasRole('condomino')) {
            return redirect()->route('condomino.dashboard');
        } else {
            return redirect()->route('dashboard');
        }
    })->name('panel');
    
    // Workspace generico - URL neutro per amministrazione
    Route::prefix('workspace')->name('workspace.')->group(function () {
        Route::get('/', function() {
            $user = auth()->user();
            if ($user->hasRole('super-admin')) {
                return redirect()->route('superadmin.dashboard');
            } elseif ($user->hasRole(['admin', 'amministratore'])) {
                return redirect()->route('admin.dashboard');
            }
            return redirect()->route('dashboard');
        })->name('index');
    });
});

// --- ROUTE TEMPORANEE PER DEBUG ---
Route::middleware(['auth'])->group(function () {
    // Route temporanee per evitare errori 404
    Route::get('/admin/tickets', function() {
        return view('admin.tickets.index', ['tickets' => collect()]);
    })->name('admin.tickets.index');
    
    Route::get('/admin/tickets/ajax', function() {
        return view('admin.tickets.index-ajax');
    });

    Route::get('/admin/condomini/ajax', function() {
        return view('admin.condomini.index-ajax');
    });
    
    Route::get('/admin/soggetti', function() {
        return view('admin.soggetti.index', ['soggetti' => collect()]);
    })->name('admin.soggetti.index');
});

// --- Public Routes ---
Route::get('/', function () { return view('welcome'); });

// --- Authenticated Routes ---
Route::middleware(['auth', 'verified'])->group(function () {
    
    // Management Panel (generic URL that works for all admin levels)
    Route::middleware(['auth', 'verified'])->prefix('management')->name('mgmt.')->group(function () {
        
        // Dashboard universale
        Route::get('/', [SecureDashboardController::class, 'index'])->name('dashboard');
        
        // Rotte per super-admin (nascoste dietro URL generici)
        Route::middleware(['role:super-admin'])->group(function () {
            Route::resource('users', SuperAdminUserController::class)->except(['show']);
            Route::patch('users/{user}/update-role', [SuperAdminUserController::class, 'updateRole'])->name('users.updateRole');
            Route::get('users/{user}/impersonate', [SuperAdminUserController::class, 'impersonate'])->name('users.impersonate');
        });
        
        // Rotte per admin e amministratori
        Route::middleware(['role:admin|amministratore|super-admin'])->prefix('admin')->name('admin.')->group(function () {
            // Route specifica per form AJAX stabili (DEVE ESSERE PRIMA DEL RESOURCE!)
            Route::get('stabili/create/form', [StabileController::class, 'createForm'])->name('stabili.create.form');
            
            // Gestione Stabili per Admin
            Route::resource('stabili', StabileController::class);
            
            // Gestione Documenti Stabili
            Route::prefix('stabili/{stabile}')->group(function() {
                Route::get('documenti', [DocumentiController::class, 'index'])->name('stabili.documenti.index');
                Route::post('documenti', [DocumentiController::class, 'store'])->name('stabili.documenti.store');
                Route::get('documenti/search', [DocumentiController::class, 'search'])->name('stabili.documenti.search');
                Route::get('documenti/print', [DocumentiController::class, 'printList'])->name('stabili.documenti.print');
            });
            
            // Gestione singoli documenti
            Route::prefix('documenti')->name('documenti.')->group(function() {
                Route::get('{documento}/download', [DocumentiController::class, 'download'])->name('download');
                Route::get('{documento}/view', [DocumentiController::class, 'view'])->name('view');
                Route::put('{documento}/metadata', [DocumentiController::class, 'updateMetadata'])->name('metadata.update');
                Route::delete('{documento}', [DocumentiController::class, 'destroy'])->name('destroy');
                Route::post('download-multiple', [DocumentiController::class, 'downloadMultiple'])->name('download.multiple');
                Route::post('delete-multiple', [DocumentiController::class, 'deleteMultiple'])->name('delete.multiple');
            });
        });
    });

    // Route profilo utente
Route::middleware('auth')->group(function () {
    Route::get('/profile', function () {
        return view('profile.edit');
    })->name('profile.edit');
    
    Route::patch('/profile', function (Request $request) {
        $request->validate([
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users,email,' . auth()->id(),
        ]);

        auth()->user()->update($request->only('name', 'email'));

        return redirect()->route('profile.edit')->with('success', 'Profilo aggiornato con successo.');
    })->name('profile.update');
    
    Route::delete('/profile', function (Request $request) {
        // Per ora disabilitato per sicurezza
        return redirect()->route('profile.edit')->with('error', 'Eliminazione account disabilitata.');
    })->name('profile.destroy');
});

    // --- SUPER-ADMIN PANEL ---
    Route::middleware(['role:super-admin'])->prefix('superadmin')->name('superadmin.')->group(function () {
        Route::get('/', function() {
            return view('superadmin.dashboard');
        })->name('dashboard');

        // Gestione utenti
        Route::resource('users', SuperAdminUserController::class)->except(['show']);
        Route::patch('users/{user}/update-role', [SuperAdminUserController::class, 'updateRole'])->name('users.updateRole');
        Route::get('users/{user}/impersonate', [SuperAdminUserController::class, 'impersonate'])->name('users.impersonate');
        

        // Impostazioni Sistema
        Route::get('impostazioni', [\App\Http\Controllers\SuperAdmin\ImpostazioniController::class, 'index'])->name('impostazioni.index');
        Route::post('impostazioni', [\App\Http\Controllers\SuperAdmin\ImpostazioniController::class, 'store'])->name('impostazioni.store');
        Route::post('impostazioni/theme', [\App\Http\Controllers\SuperAdmin\ImpostazioniController::class, 'theme'])->name('impostazioni.theme');
        
        // Gestione Comuni
        Route::resource('comuni', \App\Http\Controllers\SuperAdmin\ComuniController::class);
        Route::post('comuni/import', [\App\Http\Controllers\SuperAdmin\ComuniController::class, 'import'])->name('comuni.import');
        Route::get('comuni/search', [\App\Http\Controllers\SuperAdmin\ComuniController::class, 'search'])->name('comuni.search');
        Route::get('comuni/{id}/data', [\App\Http\Controllers\SuperAdmin\ComuniController::class, 'getComune'])->name('comuni.data');
        
        // Gestione Archivi di Sistema
        Route::prefix('archivi')->name('archivi.')->group(function () {
            Route::get('/', [\App\Http\Controllers\SuperAdmin\ArchiviSistemaController::class, 'index'])->name('index');
            Route::get('/comuni', [\App\Http\Controllers\SuperAdmin\ArchiviSistemaController::class, 'comuniItaliani'])->name('comuni');
            Route::post('/import', [\App\Http\Controllers\SuperAdmin\ArchiviSistemaController::class, 'importZip'])->name('import');
            Route::post('/sincronizza-istat', [\App\Http\Controllers\SuperAdmin\ArchiviSistemaController::class, 'sincronizzaIstat'])->name('sincronizza-istat');
        });
        
        // Gestione Amministratori
        Route::resource('amministratori', SuperAdminAmministratoreController::class)
            ->except(['show'])
            ->parameters(['amministratori' => 'amministratore']);
        
        // Gestione Categorie Ticket
        Route::resource('categorie-ticket', CategoriaTicketController::class)->except(['show']);
        
        // Gestione Stabili (ora anche per super-admin)
        Route::resource('stabili', StabileController::class);
        
        // Route specifica per form AJAX
        Route::get('stabili/create/form', [StabileController::class, 'createForm'])->name('stabili.create.form');
        
        // API per gestione avanzata stabili
        Route::prefix('stabili/{stabile}')->group(function () {
            // Tabelle Millesimali
            Route::post('/tabelle-millesimali', [StabileController::class, 'storeTabellaMillesimale']);
            Route::put('/tabelle-millesimali/{tabella}', [StabileController::class, 'updateTabellaMillesimale']);
            Route::delete('/tabelle-millesimali/{tabella}', [StabileController::class, 'destroyTabellaMillesimale']);
            
            // Contatori
            Route::post('/contatori', [StabileController::class, 'storeContatore']);
            Route::post('/contatori/{contatore}/letture', [StabileController::class, 'storeLetturaContatore']);
            
            // Chiavi
            Route::post('/chiavi', [StabileController::class, 'storeChiave']);
            Route::post('/chiavi/{chiave}/assegna', [StabileController::class, 'assegnaChiave']);
            Route::post('/chiavi/{chiave}/restituisci', [StabileController::class, 'restituisciChiave']);
            
            // Fondi
            Route::post('/fondi', [StabileController::class, 'storeFondo']);
            
            // Import GESCON
            Route::post('/import/stabile', [StabileController::class, 'importStabile']);
            Route::post('/import/millesimi', [StabileController::class, 'importMillesimi']);
            Route::post('/import/unita', [StabileController::class, 'importUnita']);
            Route::post('/import/finanziari', [StabileController::class, 'importFinanziari']);
        });
        
        Route::resource('stabili.unitaImmobiliari', UnitaImmobiliareController::class)->shallow();
        Route::resource('unitaImmobiliari', UnitaImmobiliareController::class);
        Route::resource('soggetti', SoggettoController::class);
        Route::resource('fornitori', FornitoreController::class);
        // Note: tickets are managed in admin section to avoid namespace conflicts
        Route::resource('documenti', DocumentoController::class)->except(['edit', 'update']);
        
        // Gestione Comuni Italiani
        Route::prefix('comuni-italiani')->name('comuni-italiani.')->group(function () {
            Route::get('/', [\App\Http\Controllers\SuperAdmin\ComuniItalianiController::class, 'index'])->name('index');
            Route::post('upload-zip', [\App\Http\Controllers\SuperAdmin\ComuniItalianiController::class, 'uploadZip'])->name('upload-zip');
            Route::get('search', [\App\Http\Controllers\SuperAdmin\ComuniItalianiController::class, 'search'])->name('search');
            Route::get('stats', [\App\Http\Controllers\SuperAdmin\ComuniItalianiController::class, 'stats'])->name('stats');
            Route::get('export', [\App\Http\Controllers\SuperAdmin\ComuniItalianiController::class, 'export'])->name('export');
            Route::post('reset', [\App\Http\Controllers\SuperAdmin\ComuniItalianiController::class, 'reset'])->name('reset');
        });
        
        // Diagnostica
        Route::get('/diagnostica', function() { return view('superadmin.diagnostica'); })->name('diagnostica');
        Route::get('/diagnostica-menu', function() {
            return view('superadmin.diagnostica_menu');
        })->name('diagnostica_menu');
    });

    // --- ADMIN / AMMINISTRATORE PANEL ---
    Route::middleware(['auth'])->prefix('admin')->name('admin.')->group(function () {
        // Dashboard dell'amministratore
        Route::get('/', [DashboardController::class, 'index'])->name('dashboard');
        
        // Test dashboard semplificata
        Route::get('/test', function() {
            return view('admin.dashboard-test');
        })->name('dashboard.test');

        // Rotte CRUD principali
        Route::resource('stabili', StabileController::class);
        
        // === MODULO STABILI AVANZATO ===
        // Gestione Chiavi
        Route::prefix('stabili/{stabile}')->name('stabili.')->group(function () {
            Route::get('chiavi', [StabileController::class, 'chiavi'])->name('chiavi.index');
            Route::post('chiavi', [StabileController::class, 'storeChiave'])->name('chiavi.store');
            Route::post('chiavi/{chiave}/movimento', [StabileController::class, 'movimentoChiave'])->name('chiavi.movimento');
            
            // Gestione Fondi
            Route::get('fondi', [StabileController::class, 'fondi'])->name('fondi.index');
            Route::post('fondi', [StabileController::class, 'storeFondo'])->name('fondi.store');
            
            // Struttura Fisica
            Route::get('struttura', [StabileController::class, 'strutturaFisica'])->name('struttura.index');
            Route::post('struttura/auto-genera', [StabileController::class, 'autoGeneraStruttura'])->name('struttura.auto_genera');
            Route::post('unita/auto-genera', [StabileController::class, 'autoGeneraUnita'])->name('unita.auto_genera');
        });
        
        // API per gestione avanzata stabili
        Route::prefix('stabili/{stabile}')->group(function () {
            // Tabelle Millesimali
            Route::post('/tabelle-millesimali', [StabileController::class, 'storeTabellaMillesimale']);
            Route::put('/tabelle-millesimali/{tabella}', [StabileController::class, 'updateTabellaMillesimale']);
            Route::delete('/tabelle-millesimali/{tabella}', [StabileController::class, 'destroyTabellaMillesimale']);
            
            // Contatori
            Route::post('/contatori', [StabileController::class, 'storeContatore']);
            Route::post('/contatori/{contatore}/letture', [StabileController::class, 'storeLetturaContatore']);
            
            // Chiavi
            Route::post('/chiavi', [StabileController::class, 'storeChiave']);
            Route::post('/chiavi/{chiave}/assegna', [StabileController::class, 'assegnaChiave']);
            Route::post('/chiavi/{chiave}/restituisci', [StabileController::class, 'restituisciChiave']);
            
            // Fondi
            Route::post('/fondi', [StabileController::class, 'storeFondo']);
            
            // Import GESCON
            Route::post('/import/stabile', [StabileController::class, 'importStabile']);
            Route::post('/import/millesimi', [StabileController::class, 'importMillesimi']);
            Route::post('/import/unita', [StabileController::class, 'importUnita']);
            Route::post('/import/finanziari', [StabileController::class, 'importFinanziari']);
        });
        
        Route::resource('stabili.unitaImmobiliari', UnitaImmobiliareController::class)->shallow();
        Route::resource('unitaImmobiliari', UnitaImmobiliareController::class);
        Route::resource('soggetti', SoggettoController::class);
        Route::resource('fornitori', FornitoreController::class);
        
        // Tickets - definite manualmente per debug
        Route::get('tickets', [TicketController::class, 'index'])->name('tickets.index');
        Route::get('tickets/create', [TicketController::class, 'create'])->name('tickets.create');
        Route::post('tickets', [TicketController::class, 'store'])->name('tickets.store');
        Route::get('tickets/{ticket}', [TicketController::class, 'show'])->name('tickets.show');
        Route::get('tickets/{ticket}/edit', [TicketController::class, 'edit'])->name('tickets.edit');
        Route::put('tickets/{ticket}', [TicketController::class, 'update'])->name('tickets.update');
        Route::delete('tickets/{ticket}', [TicketController::class, 'destroy'])->name('tickets.destroy');

        // Gestione Documenti
        Route::resource('documenti', DocumentoController::class)->except(['edit', 'update']);
        Route::get('documenti/{documento}/download', [DocumentoController::class, 'download'])->name('documenti.download');

        // Gestione Preventivi
        Route::prefix('preventivi')->name('preventivi.')->group(function () {
            Route::get('/', [PreventivoController::class, 'index'])->name('index');
            Route::get('/create', [PreventivoController::class, 'create'])->name('create');
            Route::post('/', [PreventivoController::class, 'store'])->name('store');
            Route::get('/{preventivo}', [PreventivoController::class, 'show'])->name('show');
            Route::get('/{preventivo}/edit', [PreventivoController::class, 'edit'])->name('edit');
            Route::put('/{preventivo}', [PreventivoController::class, 'update'])->name('update');
            Route::post('/{preventivo}/approva', [PreventivoController::class, 'approva'])->name('approva');
            Route::post('/{preventivo}/genera-rate', [PreventivoController::class, 'generaRate'])->name('genera-rate');
            Route::get('/{preventivo}/storico', [PreventivoController::class, 'storicoModifiche'])->name('storico');
            Route::get('/pianificazione/dashboard', [PreventivoController::class, 'pianificazione'])->name('pianificazione');
        });

        // Gestione Bilanci e Consuntivi
        Route::prefix('bilanci')->name('bilanci.')->group(function () {
            Route::get('/', [BilancioController::class, 'index'])->name('index');
            Route::get('/create', [BilancioController::class, 'create'])->name('create');
            Route::post('/', [BilancioController::class, 'store'])->name('store');
            Route::get('/{bilancio}', [BilancioController::class, 'show'])->name('show');
            Route::get('/{bilancio}/edit', [BilancioController::class, 'edit'])->name('edit');
            Route::put('/{bilancio}', [BilancioController::class, 'update'])->name('update');
            Route::post('/{bilancio}/calcola-conguagli', [BilancioController::class, 'calcolaConguagli'])->name('calcola-conguagli');
            Route::post('/{bilancio}/genera-rate-conguaglio', [BilancioController::class, 'generaRateConguaglio'])->name('genera-rate-conguaglio');
            Route::post('/{bilancio}/quadratura', [BilancioController::class, 'quadratura'])->name('quadratura');
            Route::post('/{bilancio}/chiusura-esercizio', [BilancioController::class, 'chiusuraEsercizio'])->name('chiusura-esercizio');
            Route::get('/{bilancio}/storico', [BilancioController::class, 'storicoModifiche'])->name('storico');
            Route::get('/quadrature/dashboard', [BilancioController::class, 'quadratureDashboard'])->name('quadrature');
            Route::get('/conguagli/dashboard', [BilancioController::class, 'conguagliDashboard'])->name('conguagli');
            Route::get('/rimborsi/dashboard', [BilancioController::class, 'rimborsiDashboard'])->name('rimborsi');
            Route::get('/automazioni/dashboard', [BilancioController::class, 'automazioniDashboard'])->name('automazioni');
        });

        // Gestione Contabilità
        Route::prefix('contabilita')->name('contabilita.')->group(function () {
            Route::get('/', [ContabilitaController::class, 'index'])->name('index');
            Route::get('/movimenti', [ContabilitaController::class, 'movimenti'])->name('movimenti');
            Route::get('/registrazione', [ContabilitaController::class, 'registrazione'])->name('registrazione');
            Route::post('/registrazione', [ContabilitaController::class, 'storeRegistrazione'])->name('store-registrazione');
            Route::get('/import-xml', [ContabilitaController::class, 'importXml'])->name('import-xml');
            Route::post('/import-xml', [ContabilitaController::class, 'importXml'])->name('import-xml.store');
        });

        // Gestione Voci di Spesa
        Route::resource('voci-spesa', VoceSpesaController::class);
        Route::post('voci-spesa/{voceSpesa}/duplicate', [VoceSpesaController::class, 'duplicate'])->name('voci-spesa.duplicate');
        Route::get('ajax/tabelle-millesimali', [VoceSpesaController::class, 'getTabelleMillesimali'])->name('ajax.tabelle-millesimali');

        // Gestione Ripartizioni Spesa
        Route::resource('ripartizioni-spesa', RipartizioneSpesaController::class);
        Route::post('ripartizioni-spesa/{ripartizioneSpesa}/conferma', [RipartizioneSpesaController::class, 'conferma'])->name('ripartizioni-spesa.conferma');

        // Gestione Piani Rateizzazione
        Route::resource('piani-rateizzazione', PianoRateizzazioneController::class);
        Route::post('piani-rateizzazione/{pianoRateizzazione}/attiva', [PianoRateizzazioneController::class, 'attiva'])->name('piani-rateizzazione.attiva');
        Route::post('piani-rateizzazione/{pianoRateizzazione}/sospendi', [PianoRateizzazioneController::class, 'sospendi'])->name('piani-rateizzazione.sospendi');

        // Gestione Rate
        Route::resource('rate', RataController::class)->only(['index', 'show', 'edit', 'update']);
        Route::get('rate/{rata}/pagamento', [RataController::class, 'showPagamentoForm'])->name('rate.pagamento');
        Route::post('rate/{rata}/registra-pagamento', [RataController::class, 'registraPagamento'])->name('rate.registra-pagamento');
        Route::delete('rate/{rata}/annulla-pagamento', [RataController::class, 'annullaPagamento'])->name('rate.annulla-pagamento');
        Route::get('rate/{rata}/posticipo', [RataController::class, 'showPosticipoForm'])->name('rate.posticipo');
        Route::post('rate/{rata}/posticipa', [RataController::class, 'posticipa'])->name('rate.posticipa');
        Route::get('rate/report', [RataController::class, 'report'])->name('rate.report');
        Route::get('rate/export/csv', [RataController::class, 'exportCsv'])->name('rate.export.csv');

        // Gestione Archivi Stabili
        Route::resource('anagrafica-condominiale', AnagraficaCondominusController::class);
        Route::resource('tabelle-millesimali', TabellaMillesimaleController::class);
        Route::resource('diritti-reali', DirittoRealeController::class);
        Route::resource('contratti-locazione', ContrattoLocazioneController::class);
        Route::resource('assemblee', AssembleaController::class);
        Route::resource('gestioni', GestioneController::class);
        Route::resource('allegati', AllegatoController::class);

        // Impostazioni e API Tokens
        Route::get('impostazioni', [ImpostazioniController::class, 'index'])->name('impostazioni.index');
        Route::post('impostazioni', [ImpostazioniController::class, 'store'])->name('impostazioni.store');
        Route::post('impostazioni/theme', [ImpostazioniController::class, 'theme'])->name('impostazioni.theme');
        Route::get('api-tokens', [ApiTokenController::class, 'index'])->name('api-tokens.index');
        Route::post('api-tokens', [ApiTokenController::class, 'store'])->name('api-tokens.store');
        Route::delete('api-tokens/{token_id}', [ApiTokenController::class, 'destroy'])->name('api-tokens.destroy');
        
        // Rubrica
        Route::get('rubrica', [RubricaController::class, 'index'])->name('rubrica.index');
        
        // Gestione Banche
        Route::resource('banche', BancaController::class);
        
        // Gestione Movimenti Bancari
        Route::resource('movimenti-bancari', MovimentoBancarioController::class);
        
        // Gestione Utenti (Admin)
        Route::resource('users', UserController::class);
        
        // Personalizzazione Tema
        Route::prefix('theme')->name('theme.')->group(function () {
            Route::get('/', [\App\Http\Controllers\Admin\ThemeController::class, 'index'])->name('index');
            Route::post('/save', [\App\Http\Controllers\Admin\ThemeController::class, 'save'])->name('save');
            Route::post('/preset', [\App\Http\Controllers\Admin\ThemeController::class, 'applyPreset'])->name('preset');
            Route::post('/reset', [\App\Http\Controllers\Admin\ThemeController::class, 'reset'])->name('reset');
            Route::get('/css', [\App\Http\Controllers\Admin\ThemeController::class, 'getCss'])->name('css');
            Route::get('/export', [\App\Http\Controllers\Admin\ThemeController::class, 'export'])->name('export');
            Route::post('/import', [\App\Http\Controllers\Admin\ThemeController::class, 'import'])->name('import');
        });
    });

    // --- CONDOMINO PANEL ---
    Route::middleware(['role:condomino'])->prefix('condomino')->name('condomino.')->group(function () {
        // Dashboard
        Route::get('/', [CondominoDashboardController::class, 'index'])->name('dashboard');
        
        // Tickets
        Route::resource('tickets', CondominoTicketController::class)->only(['index', 'create', 'store', 'show']);
        
        // Documenti
        Route::get('/documenti', [CondominoDocumentoController::class, 'index'])->name('documenti.index');
        
        // Unità Immobiliari
        Route::get('/unita', [CondominoUnitaController::class, 'index'])->name('unita.index');
        Route::get('/unita/{unitaImmobiliare}', [CondominoUnitaController::class, 'show'])->name('unita.show');
        Route::post('/unita/{unitaImmobiliare}/richiesta-modifica', [CondominoUnitaController::class, 'richiestaModifica'])->name('unita.richiesta-modifica');
        
        // Pagamenti (placeholder)
        Route::view('/pagamenti', 'condomino.pagamenti.index')->name('pagamenti.index');
        
        // Altre viste placeholder
        Route::view('/scadenze', 'condomino.scadenze')->name('scadenze');
        Route::view('/comunicazioni', 'condomino.comunicazioni')->name('comunicazioni');
        Route::view('/avvisi', 'condomino.avvisi')->name('avvisi');
        Route::view('/guasti', 'condomino.guasti')->name('guasti');
        Route::view('/contabilita', 'condomino.contabilita')->name('contabilita');
        Route::view('/fornitori', 'condomino.fornitori')->name('fornitori');
        Route::view('/bacheca', 'condomino.bacheca')->name('bacheca');
        Route::view('/sondaggi', 'condomino.sondaggi')->name('sondaggi');
    });

    // --- DEBUG ROUTE FOR PERMISSIONS ---
    Route::get('/test-permissions', function() {
        $user = Auth::user();
        echo "<h1>Diagnostica Permessi per: " . $user->name . "</h1>";
        echo "<h2>Ruoli Assegnati:</h2>";
        echo "<p>Debug route temporaneamente disabilitata per risolvere errori di route</p>";
    });
});

// --- PUBLIC ROUTE TO LEAVE IMPERSONATION ---
Route::get('impersonate/leave', [\Lab404\Impersonate\Controllers\ImpersonateController::class, 'leave'])->name('impersonate.leave');

// --- AUTHENTICATION ROUTES ---
require __DIR__.'/auth.php';

Route::middleware(['auth'])->group(function () {
    Route::view('/contabilita/registrazione-test', 'contabilita.registrazione-test')
        ->name('contabilita.registrazione-test');
});

// Rotta per aggiornare la sessione con lo stabile selezionato
Route::post('/session/stabile', function (\Illuminate\Http\Request $request) {
    $request->validate(['stabile' => 'required|string']);
    session(['stabile_corrente' => $request->input('stabile')]);
    return response()->json(['ok' => true]);
})->middleware('auth')->name('session.stabile');

// NOTE: Admin routes are defined above in the main admin group section

// Test route per la sidebar modulare
Route::get('/test-sidebar', function () {
    return view('test-sidebar');
})->name('test.sidebar');

// Test routes for sidebar functionality
Route::get('/test-sidebar-data', [App\Http\Controllers\TestSidebarController::class, 'index'])->name('test-sidebar-data');

Route::post('/admin/clear-cache', function() {
    \App\Helpers\SidebarStatsHelper::clearCache();
    \App\Helpers\DashboardDataHelper::clearCache();
    \Illuminate\Support\Facades\Artisan::call('cache:clear');
    return response()->json(['status' => 'success']);
})->name('admin.clear-cache');

// TEMPORARY ROUTES FOR TICKETS TO FIX SIDEBAR ERROR
Route::middleware(['auth'])->prefix('admin')->name('admin.')->group(function () {
    Route::get('tickets', function() {
        return view('admin.tickets.index', ['tickets' => collect()]);
    })->name('tickets.index');
    
    Route::get('tickets/create', function() {
        return view('admin.tickets.create');
    })->name('tickets.create');
    
    Route::get('rate', function() {
        return view('admin.rate.index', ['rate' => collect()]);
    })->name('rate.index');
    
    Route::get('assemblee', function() {
        return view('admin.assemblee.index', ['assemblee' => collect()]);
    })->name('assemblee.index');
});

// ROUTE COMPLETE PER TUTTI I MENU DELLA SIDEBAR
Route::middleware(['auth'])->prefix('admin')->name('admin.')->group(function () {
    
    // === CONDOMINI ===
    Route::get('condomini', function() {
        return view('admin.condomini.index', ['condomini' => collect()]);
    })->name('condomini.index');
    Route::get('condomini/create', function() {
        return view('admin.condomini.create');
    })->name('condomini.create');
    
    // === CONTABILITÀ ===
    Route::get('contabilita', function() {
        return view('admin.contabilita.index', ['contabilita' => collect()]);
    })->name('contabilita.index');
    Route::get('contabilita/create', function() {
        return view('admin.contabilita.create');
    })->name('contabilita.create');
    Route::get('contabilita/partitario', function() {
        return view('admin.contabilita.partitario');
    })->name('contabilita.partitario');
    Route::get('contabilita/bilanci', function() {
        return view('admin.contabilita.bilanci');
    })->name('contabilita.bilanci');
    
    // === FISCALE ===
    Route::get('fiscale', function() {
        return view('admin.fiscale.index', ['fiscale' => collect()]);
    })->name('fiscale.index');
    Route::get('fiscale/create', function() {
        return view('admin.fiscale.create');
    })->name('fiscale.create');
    Route::get('fiscale/f24', function() {
        return view('admin.fiscale.f24');
    })->name('fiscale.f24');
    Route::get('fiscale/dichiarazioni', function() {
        return view('admin.fiscale.dichiarazioni');
    })->name('fiscale.dichiarazioni');
    
    // === RISORSE ECONOMICHE ===
    Route::get('risorse-economiche', function() {
        return view('admin.risorse-economiche.index', ['risorse' => collect()]);
    })->name('risorse-economiche.index');
    Route::get('risorse-economiche/create', function() {
        return view('admin.risorse-economiche.create');
    })->name('risorse-economiche.create');
    Route::get('risorse-economiche/budget', function() {
        return view('admin.risorse-economiche.budget');
    })->name('risorse-economiche.budget');
    
    // === AFFITTI ===
    Route::get('affitti', function() {
        return view('admin.affitti.index', ['affitti' => collect()]);
    })->name('affitti.index');
    Route::get('affitti/create', function() {
        return view('admin.affitti.create');
    })->name('affitti.create');
    Route::get('affitti/contratti', function() {
        return view('admin.affitti.contratti');
    })->name('affitti.contratti');
    
    // === COMUNICAZIONI ===
    Route::get('comunicazioni', function() {
        return view('admin.comunicazioni.index', ['comunicazioni' => collect()]);
    })->name('comunicazioni.index');
    Route::get('comunicazioni/create', function() {
        return view('admin.comunicazioni.create');
    })->name('comunicazioni.create');
    Route::get('comunicazioni/email', function() {
        return view('admin.comunicazioni.email');
    })->name('comunicazioni.email');
    
    // === PRATICHE ===
    Route::get('pratiche', function() {
        return view('admin.pratiche.index', ['pratiche' => collect()]);
    })->name('pratiche.index');
    Route::get('pratiche/create', function() {
        return view('admin.pratiche.create');
    })->name('pratiche.create');
    Route::get('pratiche/documenti', function() {
        return view('admin.pratiche.documenti');
    })->name('pratiche.documenti');
    
    // === CONSUMI ===
    Route::get('consumi', function() {
        return view('admin.consumi.index', ['consumi' => collect()]);
    })->name('consumi.index');
    Route::get('consumi/create', function() {
        return view('admin.consumi.create');
    })->name('consumi.create');
    Route::get('consumi/letture', function() {
        return view('admin.consumi.letture');
    })->name('consumi.letture');
    
    // === IMPOSTAZIONI ===
    Route::get('impostazioni', function() {
        return view('admin.impostazioni.index');
    })->name('impostazioni.index');
    Route::get('impostazioni/sistema', function() {
        return view('admin.impostazioni.sistema');
    })->name('impostazioni.sistema');
    Route::get('impostazioni/utenti', function() {
        return view('admin.impostazioni.utenti');
    })->name('impostazioni.utenti');
    
});
