/** * 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'); }