<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Auth;
use App\Models\Stabile;
use App\Models\Gestione;

class SidebarComposer extends ServiceProvider
{
    public function boot()
    {
        View::composer('components.menu.sidebar', function ($view) {
            $user = Auth::user();
            $stabili = [];
            if ($user) {
                // Example: fetch stabili for amministratore or all for super-admin
                if ($user->hasRole('super-admin')) {
                    $stabili = Stabile::orderBy('denominazione')->get();
                } elseif ($user->amministratore) {
                    $stabili = Stabile::where('amministratore_id', $user->amministratore->id_amministratore)->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,
            ]);
        });
    }

    public function register() {}
}
