group(function () { // Generic Dashboard (redirects to the correct panel based on role) Route::get('/dashboard', function () { return view('dashboard'); })->name('dashboard'); // Profile Routes Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit'); Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update'); Route::delete('/profile', [ProfileController::class, 'destroy'])->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'); // Gestione Amministratori Route::resource('amministratori', SuperAdminAmministratoreController::class) ->except(['show']) ->parameters(['amministratori' => 'amministratore']); // Gestione Categorie Ticket Route::resource('categorie-ticket', CategoriaTicketController::class)->except(['show']); // Diagnostica Route::get('/diagnostica', function() { return view('superadmin.diagnostica'); })->name('diagnostica'); }); // --- ADMIN / AMMINISTRATORE PANEL --- Route::middleware(['role:admin|amministratore'])->prefix('admin')->name('admin.')->group(function () { // Dashboard dell'amministratore Route::get('/', [DashboardController::class, 'index'])->name('dashboard'); // Rotte CRUD principali Route::resource('stabili', StabileController::class); Route::resource('stabili.unitaImmobiliari', UnitaImmobiliareController::class)->shallow(); Route::resource('unitaImmobiliari', UnitaImmobiliareController::class)->only(['edit', 'update', 'destroy']); Route::resource('soggetti', SoggettoController::class); Route::resource('fornitori', FornitoreController::class); Route::resource('tickets', TicketController::class); // 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'); }); // 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'); }); // Impostazioni e API Tokens Route::get('impostazioni', [ImpostazioniController::class, 'index'])->name('impostazioni.index'); Route::post('impostazioni', [ImpostazioniController::class, 'store'])->name('impostazioni.store'); 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'); }); // --- 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'); Route::get('/documenti/{documento}/download', [CondominoDocumentoController::class, 'download'])->name('documenti.download'); // 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('/documenti', 'condomino.documenti')->name('documenti'); 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 "