protected function filter2($filterValue) { //Pour les TPs, le filter 2 est la sessionScholaire try { if ($filterValue == 0) { // 0 indique 'Tous' sur filter2 $classes = Classe::all(); } else { $classes = $this->filteringClass->where('sessionscholaire_id', '=', $filterValue)->get(); //va chercher les classes pour cette session } //Si l'usager connecté n'a pas la capacité de gérer les classes, alors on liste seulement les classes associées à cet usager. if (!Auth::user()->ability('', 'ajout-classe')) { $u = Auth::user(); $classes = $classes->filter(function ($item) use($u) { return $item->professeurs()->get()->contains("id", $u->id); }); } $lignes = []; foreach ($classes as $classe) { //créé la liste des ids des TPs pour toutes ces classes. $lignes[$classe->nom] = $classe->tps->sortBy('nom'); } // liste les TPs qui ne sont associés à aucune classe. $tps = TP::all(); foreach ($tps as $tp) { if ($tp->classes->isempty()) { $listeTPsOrphelins[] = $tp->id; } } if (!empty($listeTPsOrphelins)) { $lignes['Aucune classe associée'] = TP::wherein('id', $listeTPsOrphelins)->get(); } } catch (Exception $e) { $lignes = []; } return $lignes; }
private function displayView($option0, $selectedValue, $item = null, $displayOnlyLinked = null) { if (isset($item) and isset($displayOnlyLinked)) { $lesTPs = $item->tps; //affiche seulement les tps associées à cet item. (utile pour show) } else { //sinon affiche tous. $lesTPs = TP::all()->sortby("nom"); } $belongsToList = createSelectOptions($lesTPs, [get_class(), 'createOptionsValue'], $option0); if (isset($item)) { //si on a un item, on sélectionne seulement ce qui est associées $belongsToSelectedIds = $item->TPs->pluck('id')->toArray(); } else { //sinon, on sélectionne ce qui a été passée en paramêtre (si c'est bon, sinon, la première de la liste $belongsToSelectedIds = checkLinkedId(array_keys($belongsToList)[0], $selectedValue, 'App\\Models\\TP'); } $filtre1 = createFiltreParClassePourTP($lesTPs, true); $question = $item; return compact('question', 'belongsToList', 'belongsToSelectedIds', 'filtre1'); }