コード例 #1
0
 protected function construitQuestionnaire($etudiant, $classe, $tp, $pageCourante)
 {
     $toutesLesQuestions = $tp->questions()->orderBy('ordre')->get();
     $toutesLesReponses = Note::where('classe_id', '=', $classe->id)->where('tp_id', '=', $tp->id)->where('etudiant_id', '=', $etudiant->id)->get();
     //batit la pagination des questions
     $i = 1;
     foreach ($toutesLesReponses as $reponse) {
         $page[$i][] = $reponse->id;
         if ($toutesLesQuestions->find($reponse->question_id)->pivot->breakafter) {
             $i++;
         }
     }
     //batit la liste des réponses déjà soumises par l'étudiant associées aux questions de la page affichée
     $reponsesPageCourante = Note::whereIn('id', $page[$pageCourante])->orderBy("ordre")->get();
     //les indicateurs pour la pagination
     if (!empty($page[$pageCourante + 1])) {
         $pageSuivante = $pageCourante + 1;
     } else {
         $pageSuivante = null;
     }
     if (!empty($page[$pageCourante - 1])) {
         $pagePrecedente = $pageCourante - 1;
     } else {
         $pagePrecedente = null;
     }
     //le numéro de la première question de la page courante.
     $premiereQuestion = $toutesLesReponses->find($page[$pageCourante][0])->ordre;
     //store les ids afin de pouvoir les récupérer au retour afin que l'étudiant ne puisse répondre ou voir le TP des autres.
     Session::put('classeId', $classe->id);
     Session::put('tpId', $tp->id);
     Session::put('pageCourante', $pageCourante);
     return compact('toutesLesQuestions', 'toutesLesReponses', 'reponsesPageCourante', 'tp', 'classe', 'etudiant', 'pagePrecedente', 'pageCourante', 'pageSuivante', 'premiereQuestion');
 }