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

46 lines
1.5 KiB
PHP
Raw Permalink Normal View History

<?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),
]);
}
}