Paillasse/portail/app/Http/Controllers/ResultatsController.php

41 lines
1.4 KiB
PHP
Raw Normal View History

<?php
namespace App\Http\Controllers;
use App\Models\Classe;
use App\Models\Correction;
use Illuminate\Support\Facades\Auth;
use Illuminate\View\View;
/**
* « Résultats » (séparation vitrine/application, 2026-10-13) : vue
* d'ensemble, par classe, des corrections et des observations. Le détail
* séance par séance reste dans le cockpit de chaque classe.
*/
class ResultatsController extends Controller
{
public function show(): View
{
$prof = Auth::guard('web')->user();
$classes = $prof->classes()->whereNull('archivee_a')->orderBy('nom')->get();
$resultats = $classes->map(function (Classe $classe) {
$corrections = Correction::whereHas('labSession', fn ($q) => $q->whereIn('seance_id', $classe->seances()->select('id')))
->latest()
->limit(50)
->get();
return [
'classe' => $classe,
'nombreCorrections' => $corrections->count(),
'reussiteMoyenne' => $corrections->isNotEmpty()
? (int) round($corrections->avg(fn ($c) => $c->note_max > 0 ? $c->note / $c->note_max * 100 : 0))
: null,
'observations' => $classe->observations()->with('eleve')->limit(5)->get(),
];
});
return view('resultats', ['resultats' => $resultats]);
}
}