Ejemplo n.º 1
0
 public function checkAnswer()
 {
     $presentId = Input::get('presentId');
     $userMaxId = Users::getUserMaxId(Auth::id());
     $userAnswer = Input::get('answer');
     $correctAnswer1 = Answer::getAnswer($presentId, 'answer1');
     $correctAnswer2 = Answer::getAnswer($presentId, 'answer2');
     if ($userAnswer == $correctAnswer1 || $userAnswer == $correctAnswer2) {
         if ($userMaxId == $presentId) {
             Users::updateId($userMaxId);
             $userMaxId = Users::getUserMaxId(Auth::id());
             $userMaxLevel = Users::getMaxLevel($userMaxId);
             Users::updateUserLevel($userMaxLevel);
         }
         $presentId = $presentId + 1;
         // Session::put('presentLevel',$presentLevel);
         $presentLevelName = Levels::getLevelName($presentId);
         return Redirect::to($presentLevelName[0]->levelName);
     } else {
         return Redirect::back()->with('message', 'Wrong Answer!');
     }
 }
Ejemplo n.º 2
0
 /**
  * Helper function to check an answer. Side effect: stores the answer in the database.
  * @param $answer - the answer to check
  * @return ['fromWhence' => '', 'correct' => true|false]
  */
 protected function checkAnswer(\App\Answer $answer)
 {
     if ($this->lastFlashcard->cardtype == 'fill') {
         $correct = (int) (strtoupper($answer->getAnswer()) == strtoupper($this->lastFlashcard->back));
     } else {
         $correct = (int) ($answer->getAnswer() == $this->lastFlashcard->back);
     }
     $this->lastFlashcard->sessions()->save($this->session, ['interaction' => $this->type . 'ed', 'correct' => $correct]);
     if ($correct && $answer->getFromWhence() == \App\Answer::MC) {
         //remove card from usuable ones.
         $this->remainingFlashcards = $this->remainingFlashcards->reject(function ($flashcard) {
             return $flashcard->id == $this->lastFlashcard->id;
         });
         //add card to interacted
         $this->interactedFlashcards->push($this->lastFlashcard);
         $query = DB::table('flashcardables')->where('flashcardable_type', 'App\\User')->where('flashcardable_id', $this->user->id)->where('flashcard_id', $this->lastFlashcard->id)->get();
         if (!count($query)) {
             $this->user->flashcards()->save($this->lastFlashcard, ['num_correct' => 1, 'last_review_time' => \Carbon\Carbon::now()]);
         } else {
             $this->user->flashcards()->where('flashcard_id', $this->lastFlashcard->id)->increment('num_correct');
         }
         $this->numCorrect++;
         return ['fromWhence' => \App\Answer::MC, 'correct' => true];
     } else {
         if (!$correct && $answer->getFromWhence() == \App\Answer::MC) {
             $query = DB::table('flashcardables')->where('flashcardable_type', 'App\\User')->where('flashcardable_id', $this->user->id)->where('flashcard_id', $this->lastFlashcard->id)->get();
             if (!count($query)) {
                 $this->user->flashcards()->save($this->lastFlashcard, ['num_incorrect' => 1, 'last_review_time' => \Carbon\Carbon::now()]);
             } else {
                 $this->user->flashcards()->where('flashcard_id', $this->lastFlashcard->id)->increment('num_incorrect');
             }
             $this->numIncorrect++;
             return ['fromWhence' => \App\Answer::MC, 'correct' => false];
         } else {
             return ['fromWhence' => 'card', 'correct' => true];
         }
     }
 }