/** * 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; }
/** * Sauvegarde la correction * @param unknown $etudiant_id * @param unknown $classe_id * @param unknown $tp_id * @param unknown $questions_id * @param unknown $input */ public function doCorriger($etudiant_id, $classe_id, $tp_id, $question_id, $commentaire, $commentaire_visible, $pointage) { $etudiant = User::findorfail($etudiant_id); $classe = Classe::findorfail($classe_id); $tp = TP::findorfail($tp_id); $question = Question::findorfail($question_id); $reponse = Note::where('classe_id', '=', $classe->id)->where('tp_id', '=', $tp->id)->where('etudiant_id', '=', $etudiant->id)->where('question_id', $question->id)->first(); $reponse->commentaire = $commentaire; $reponse->commentaire_visible = $commentaire_visible; $reponse->note = $pointage; if ($reponse->save()) { return true; } else { return $reponse->validationMessages; } }