✅ Correzioni: - DashboardController: usa admin->id invece di admin->id_amministratore - SidebarComposer: aggiornato per chiave modernizzata - Amministratore model: rimossa primaryKey custom, usa 'id' standard - TestSetupSeeder: corretto riferimento ID amministratore - Aggiunta gestione sicura per utenti senza amministratore �� Fix: Risolve errore 'Attempt to read property denominazione on null' 📊 Test: Creato stabile di test per verificare funzionamento
41 lines
1.7 KiB
PHP
41 lines
1.7 KiB
PHP
<?php
|
|
namespace App\Http\View\Composers;
|
|
|
|
use Illuminate\View\View;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use App\Models\Stabile;
|
|
use App\Models\Gestione;
|
|
use Spatie\Permission\Traits\HasRoles;
|
|
|
|
class SidebarComposer
|
|
{
|
|
public function compose(View $view)
|
|
{
|
|
$user = Auth::user();
|
|
if ($user && !in_array(HasRoles::class, class_uses($user))) {
|
|
$user->setRelation('roles', collect()); // fallback vuoto
|
|
}
|
|
$stabili = collect();
|
|
if ($user) {
|
|
if (method_exists($user, 'hasRole') && $user->hasRole('super-admin')) {
|
|
$stabili = Stabile::orderBy('denominazione')->get();
|
|
} elseif ($user->amministratore) {
|
|
// Usa 'id' invece di 'id_amministratore' per la chiave modernizzata
|
|
$stabili = Stabile::where('amministratore_id', $user->amministratore->id)->orderBy('denominazione')->get();
|
|
}
|
|
}
|
|
$stabileAttivo = session('stabile_corrente') ?? ($stabili->first() ? $stabili->first()->denominazione : null);
|
|
$stabileObj = $stabili->firstWhere('denominazione', $stabileAttivo);
|
|
$gestioni = $stabileObj ? Gestione::where('stabile_id', $stabileObj->id)->orderByDesc('anno_gestione')->get() : collect();
|
|
$annoAttivo = session('anno_corrente') ?? ($gestioni->first() ? $gestioni->first()->anno_gestione : date('Y'));
|
|
$gestioneAttiva = session('gestione_corrente') ?? ($gestioni->first() ? $gestioni->first()->tipo_gestione : 'Ord.');
|
|
$view->with([
|
|
'stabili' => $stabili,
|
|
'stabileAttivo' => $stabileAttivo,
|
|
'anni' => $gestioni->pluck('anno_gestione')->unique(),
|
|
'annoAttivo' => $annoAttivo,
|
|
'gestione' => $gestioneAttiva,
|
|
]);
|
|
}
|
|
}
|