Ejemplo n.º 1
0
 public function checkDatePass(PassModule $pass)
 {
     $nowDate = new \DateTime();
     $dateEstimate = $pass->getTimeStart()->modify("+{$pass->getTimePeriod()} minutes");
     if ($nowDate > $dateEstimate) {
         $this->deactivation->deactivation($pass);
         return false;
     }
     $interval = date_diff($nowDate, $dateEstimate, true);
     return $interval->format('%H:%I:%S');
 }
 public function deactivation(PassModule $passModule, $finishTime = null)
 {
     $em = $this->doctrine->getManager();
     $moduleUser = $em->getRepository('AppBundle:ModuleUser')->find($passModule->getModuleUser());
     $module = $em->getRepository('AppBundle:Module')->find($moduleUser->getModule());
     if ($finishTime) {
         $passModule->setTimeFinish($finishTime);
     }
     $passModule->setIsActive(false);
     $em->flush();
     if ($passModule->getPercentResult() >= $module->getPersentSuccess()) {
         $moduleUser->setStatus(ModuleUser::STATUS_SUCCESS);
         $moduleUser->setRating($passModule->getRating());
     } else {
         if ($moduleUser->getCountPassModules() >= $module->getAttempts()) {
             $moduleUser->setStatus(ModuleUser::STATUS_FAILED);
         }
     }
     $em->flush();
 }
Ejemplo n.º 3
0
 public function getNextQuestionForPass(PassModule $passModule)
 {
     return $this->createQueryBuilder('question')->leftJoin('question.module', 'module')->leftJoin('module.modulesUser', 'module_user')->leftJoin('module_user.passModules', 'pass_module')->orderBy('question.sort')->andWhere('pass_module.id = :idPassModule')->andWhere("question.id NOT IN(:questionIds)")->setParameter('idPassModule', $passModule->getId())->setParameter('questionIds', array_values($passModule->getAnsweredQuestionIds()))->setMaxResults(1)->getQuery()->getOneOrNullResult();
 }