예제 #1
0
 /**
  * Development function
  * @param \_OurBrand_\Quiz\Domain\Model\StudentQuizSession $studentQuizSession
  */
 public function ResetStudentQuizSessionAction($studentQuizSession)
 {
     $quiz = $studentQuizSession->getQuizSession()->getQuiz();
     foreach ($quiz->getExercises() as $exercise) {
         $previousAnswers = $this->answerRepository->findBySessionAndExercise($studentQuizSession, $exercise);
         $trackers = $this->trackStudentAudioPlaybackRepository->findBySessionAndExercise($studentQuizSession, $exercise);
         if ($previousAnswers->count() > 0) {
             foreach ($previousAnswers as $previousAnswer) {
                 $this->answerRepository->remove($previousAnswer);
             }
         }
         if ($trackers->count() > 0) {
             foreach ($trackers as $tracker) {
                 $this->trackStudentAudioPlaybackRepository->remove($tracker);
             }
         }
     }
     $studentQuizSession->setStartTime(null);
     $studentQuizSession->setCurrentTime(null);
     $studentQuizSession->setFinishedTime(null);
     $studentQuizSession->setTimesResumed(0);
     $this->studentQuizSessionRepository->update($studentQuizSession);
     $this->persistenceManager->persistAll();
     $this->redirect('studentindex');
 }
 /**
  * Update progression on playback, updated by trackerId.
  *
  */
 public function updateTrackerAction()
 {
     $trackerId = $this->request->getArgument('trackerId');
     $tracker = $this->persistenceManager->getObjectByIdentifier($trackerId, '\\_OurBrand_\\Quiz\\Domain\\Model\\TrackStudentAudioPlayback');
     if (is_a($tracker, '\\_OurBrand_\\Quiz\\Domain\\Model\\TrackStudentAudioPlayback')) {
         $elapsedTime = $this->request->getArgument('elapsedTime');
         $status = $this->request->getArgument('status');
         $tmpTime = $tracker->getTimeElapsed();
         // only update if new time is larger then the old one...
         if (intval($elapsedTime) > $tmpTime) {
             $tracker->setTimeElapsed($elapsedTime);
         }
         $tracker->setStatus($status);
         $this->trackStudentAudioPlaybackRepository->update($tracker);
         $this->persistenceManager->persistAll();
         return json_encode(array('elapsedTime' => $tracker->getTimeElapsed(), 'status' => $tracker->getStatus(), 'trackerId' => $this->persistenceManager->getIdentifierByObject($tracker)));
     }
 }