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