46 lines
1.5 KiB
PHP
46 lines
1.5 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers;
|
||
|
|
|
||
|
|
use App\Models\Seance;
|
||
|
|
use App\Models\SessionQuiz;
|
||
|
|
use App\Services\CompteurDevoirsEnAttente;
|
||
|
|
use Illuminate\Support\Facades\Auth;
|
||
|
|
use Illuminate\View\View;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* « Mes devoirs » (séparation vitrine/application, 2026-10-13) : devoirs
|
||
|
|
* maison réels, QCM en direct si une session de quiz tourne, TP joignables
|
||
|
|
* via une séance ouverte par le prof. Pas de TD assigné : ce type n'existe
|
||
|
|
* pas encore comme devoir (CLAUDE.md : pas de donnée inventée).
|
||
|
|
*/
|
||
|
|
class MesDevoirsController extends Controller
|
||
|
|
{
|
||
|
|
public function show(): View
|
||
|
|
{
|
||
|
|
$eleve = Auth::guard('eleve')->user()->load('classe');
|
||
|
|
|
||
|
|
$devoirs = $eleve->classe->devoirs()
|
||
|
|
->where('echeance', '>=', now()->subDays(7))
|
||
|
|
->with(['rendus' => fn ($q) => $q->where('eleve_id', $eleve->id)])
|
||
|
|
->get();
|
||
|
|
|
||
|
|
$seancesOuvertes = $eleve->classe->seances()
|
||
|
|
->whereIn('statut', [Seance::SALLE_ATTENTE, Seance::EN_COURS])
|
||
|
|
->with('lab')
|
||
|
|
->get();
|
||
|
|
|
||
|
|
$sessionQuiz = SessionQuiz::whereHas('quiz', fn ($q) => $q->where('classe_id', $eleve->classe_id))
|
||
|
|
->whereIn('statut', [SessionQuiz::EN_ATTENTE, SessionQuiz::EN_COURS])
|
||
|
|
->latest()
|
||
|
|
->first();
|
||
|
|
|
||
|
|
return view('mes-devoirs', [
|
||
|
|
'devoirs' => $devoirs,
|
||
|
|
'seancesOuvertes' => $seancesOuvertes,
|
||
|
|
'sessionQuiz' => $sessionQuiz,
|
||
|
|
'nombreEnAttente' => CompteurDevoirsEnAttente::pour($eleve),
|
||
|
|
]);
|
||
|
|
}
|
||
|
|
}
|