/**
  * Sauvegarde les données présentement à l'écran 
  * 
  * @param unknown $input
  * @param unknown $etudiant_id
  * @param unknown $classe_id
  * @param unknown $tp_id
  * @param unknown $pageCourante
  * @return boolean|string
  */
 public function doRepondre($reponses, $etudiant_id, $classe_id, $tp_id, $pageCourante)
 {
     $return = true;
     $etudiant = User::findorfail($etudiant_id);
     $classe = Classe::findorfail($classe_id);
     $tp = TP::findorfail($tp_id);
     $lesQuestions = $tp->questions()->orderBy('ordre')->get();
     //batit la pagination des questions
     $i = 1;
     foreach ($lesQuestions as $question) {
         $page[$i][] = $question->id;
         if ($question->pivot->breakafter == 1) {
             $i++;
         }
     }
     //choisi la bonne page de questions
     $questions = $lesQuestions->filter(function ($item) use($page, $pageCourante) {
         return in_array($item->id, $page[$pageCourante]);
     });
     //verifie que c'est les bonnes questions qui nous revienne
     $listeIdReponses = array_keys($reponses);
     foreach ($questions as $question) {
         if (!in_array($question->id, $listeIdReponses)) {
             $return = false;
         }
     }
     if ($return) {
         // on a toutes les réponses, on peut les stocker
         foreach ($questions as $question) {
             $note = Note::where('classe_id', '=', $classe_id)->where('tp_id', '=', $tp_id)->where('etudiant_id', '=', $etudiant_id)->where('question_id', '=', $question->id)->first();
             // cette requete devrait toujour fonctionner
             $note->reponse = $reponses[$question->id];
             $note->save();
         }
     }
     return $return;
 }
 public function afficheReponseAutreEtudiant($direction, $etudiantCourant_id, $classe_id, $tp_id, $question_id)
 {
     $nom = "";
     $reponse = "";
     $pointage = "";
     $commentaire = "";
     $autreEtudiantOffset = Session::pull('autreEtudiantOffset');
     $offsetOriginal = $autreEtudiantOffset;
     if ($direction == 'precedent') {
         $autreEtudiantOffset--;
     } else {
         if ($direction == 'suivant') {
             $autreEtudiantOffset++;
         }
     }
     $classe = Classe::findorfail($classe_id);
     $etudiants = $classe->etudiants()->orderBy('id')->get();
     $autreEtudiantOffset = max(0, min($autreEtudiantOffset, $etudiants->count() - 1));
     $autreEtudiant = $etudiants->offsetGet($autreEtudiantOffset);
     if ($autreEtudiant->id == $etudiantCourant_id) {
         //saute l'étudiant courant
         if ($direction == 'precedent') {
             if ($autreEtudiantOffset > 0) {
                 $autreEtudiantOffset--;
                 //saute
             } else {
                 $autreEtudiantOffset = $offsetOriginal;
             }
             //on est au début, on revient ou on était
         } else {
             if ($direction == 'suivant') {
                 if ($autreEtudiantOffset < $etudiants->count() - 1) {
                     $autreEtudiantOffset++;
                     //saute
                 } else {
                     $autreEtudiantOffset = $offsetOriginal;
                 }
                 //on est à la fin, on revient ou on était
             }
         }
         //retourne rechercher le nouvel étudiant
         $autreEtudiant = $etudiants->offsetGet($autreEtudiantOffset);
     }
     //
     if ($autreEtudiant->id != $etudiantCourant_id) {
         //je dois quand même faire ce if car dans le cas ou il n'y aurait qu'un étudiant (le else), je ne dois rien afficher
         $note = Note::where('classe_id', '=', $classe_id)->where('tp_id', '=', $tp_id)->where('etudiant_id', '=', $autreEtudiant->id)->where('question_id', '=', $question_id)->first();
         $nom = $autreEtudiant->prenom . ' ' . $autreEtudiant->nom;
         $reponse = $note->reponse;
         $pointage = $note->note;
         $commentaire = $note->commentaire;
     }
     $flagBoutonEtudiantSuivant = $autreEtudiantOffset < $etudiants->count() - 1;
     $flagBoutonEtudiantPrecedent = $autreEtudiantOffset > 0;
     Session::put('autreEtudiantOffset', $autreEtudiantOffset);
     return compact('nom', 'reponse', 'pointage', 'commentaire', 'flagBoutonEtudiantPrecedent', 'flagBoutonEtudiantSuivant');
 }