Paillasse/portail/app/Services/CompteurDevoirsEnAttente.php

34 lines
1.1 KiB
PHP
Raw Normal View History

<?php
namespace App\Services;
use App\Models\Eleve;
use App\Models\Seance;
use App\Models\SessionQuiz;
/**
* Nombre affiché sur le badge « Mes devoirs » (barre latérale et onglet
* mobile) : devoirs non rendus avant échéance, séances ouvertes, quiz en
* cours — partagé entre MesDevoirsController et le composeur de la barre.
*/
class CompteurDevoirsEnAttente
{
public static function pour(Eleve $eleve): int
{
$devoirsEnAttente = $eleve->classe->devoirs()
->where('echeance', '>=', now())
->whereDoesntHave('rendus', fn ($q) => $q->where('eleve_id', $eleve->id))
->count();
$seancesOuvertes = $eleve->classe->seances()
->whereIn('statut', [Seance::SALLE_ATTENTE, Seance::EN_COURS])
->count();
$quizEnCours = SessionQuiz::whereHas('quiz', fn ($q) => $q->where('classe_id', $eleve->classe_id))
->whereIn('statut', [SessionQuiz::EN_ATTENTE, SessionQuiz::EN_COURS])
->exists();
return $devoirsEnAttente + $seancesOuvertes + ($quizEnCours ? 1 : 0);
}
}