user()) { $classeIds = $prof->classes()->whereNull('archivee_a')->pluck('id'); $seances = Seance::whereIn('classe_id', $classeIds) ->whereIn('statut', [Seance::PLANIFIEE, Seance::SALLE_ATTENTE, Seance::EN_COURS]) ->whereNotNull('prevue_a') ->with(['classe', 'lab']) ->get(); $devoirs = Devoir::whereIn('classe_id', $classeIds) ->where('echeance', '>=', now()) ->with('classe') ->get(); } else { $eleve = Auth::guard('eleve')->user(); $seances = $eleve->classe->seances() ->whereIn('statut', [Seance::PLANIFIEE, Seance::SALLE_ATTENTE, Seance::EN_COURS]) ->whereNotNull('prevue_a') ->with(['lab', 'classe']) ->get(); $devoirs = $eleve->classe->devoirs()->where('echeance', '>=', now())->get(); } $evenements = $this->fusionner($seances, $devoirs); return view('emploi-du-temps', ['evenements' => $evenements]); } /** * @param Collection $seances * @param Collection $devoirs * @return Collection */ private function fusionner(Collection $seances, Collection $devoirs): Collection { $depuisSeances = $seances->map(fn (Seance $s) => [ 'date' => $s->prevue_a, 'type' => 'seance', 'titre' => $s->lab->titre, 'classe' => $s->classe->nom, ]); $depuisDevoirs = $devoirs->map(fn (Devoir $d) => [ 'date' => $d->echeance, 'type' => 'devoir', 'titre' => $d->titre, 'classe' => $d->classe->nom, ]); return $depuisSeances->concat($depuisDevoirs)->sortBy('date')->values(); } }