user(); // ── Sources auxquelles je suis assigné ─────────────────────────────── $mesSources = $user->sourcesAssignees() ->with('sourceType') ->withCount('releves') ->orderByRaw("CASE status WHEN 'en_cours' THEN 0 WHEN 'a_valider' THEN 1 WHEN 'a_faire' THEN 2 WHEN 'termine' THEN 3 ELSE 4 END") ->get(); // ── Mes derniers relevés ───────────────────────────────────────────── $mesReleves = Releve::with(['source.sourceType']) ->where('created_by', $user->id) ->orderByDesc('created_at') ->take(8) ->get(); // ── Stats de section (membres et responsables) ─────────────────────── $sectionsStats = null; if (! $user->isAdmin()) { $sections = $user->sections() ->with(['sources' => fn ($q) => $q ->with('sourceType') ->withCount('releves') ->orderBy('nom'), ]) ->get(); if ($sections->isNotEmpty()) { $sectionsStats = $sections->map(function ($section) { $sources = $section->sources; $byStatus = collect(SourceStatus::cases()) ->mapWithKeys(fn ($s) => [ $s->value => $sources->filter(fn ($src) => $src->status === $s)->count(), ]); return [ 'section' => $section, 'total_sources' => $sources->count(), 'by_status' => $byStatus, 'total_releves' => $sources->sum('releves_count'), 'sources_recentes' => $sources->sortByDesc('updated_at')->take(5), ]; }); } } return view('dashboard', compact('mesSources', 'mesReleves', 'sectionsStats')); } }