Esempio n. 1
0
 public static function fetchResult(Connection $conn, Area $area, Course $course)
 {
     $data = $conn->fetchAssoc('SELECT r.* ' . 'FROM `' . CourseTables::COURSE_RESULT_TBL . '` r ' . 'INNER JOIN `' . CourseTables::COURSE_AREA_RESULT_TBL . '` a ON a.`courseId` = r.`courseId` AND a.`userId` = r.`userId` ' . 'WHERE a.`areaId` = :areaId AND a.`courseId` = :courseId', array(':areaId' => $area->getId(), ':courseId' => $course->getId()));
     $result = new AreaCourseResult();
     $result->area = $area;
     $result->course = $course;
     $result->result = Question::RESULT_UNKNOWN;
     if (false === $data) {
         return $result;
     }
     DataMappers::fromArray($result, $data);
     return $result;
 }
Esempio n. 2
0
 protected function tryRecordingAreaResult(Connection $conn, Area $area, TestTrial $trial)
 {
     $areaResult = AreaCourseResult::fetchResult($conn, $area, $this->course);
     if ($areaResult->result == Question::RESULT_UNKNOWN) {
         $conn->insert(CourseTables::COURSE_AREA_RESULT_TBL, ['areaId' => $area->getId(), 'userId' => $this->user->getId(), 'courseId' => $this->course->getId()]);
         $progress = CourseProgress::fetchByArea($conn, $area);
         $progress->updateResults($conn, $areaResult, $trial);
         return $progress;
     } elseif ($areaResult->result == Question::RESULT_INVALID) {
         $conn->update(CourseTables::COURSE_AREA_RESULT_TBL, ['areaId' => $area->getId(), 'userId' => $this->user->getId(), 'courseId' => $this->course->getId()], ['areaId' => $area->getId(), 'courseId' => $this->course->getId()]);
         $progress = CourseProgress::fetchByArea($conn, $area);
         $progress->updateResults($conn, $areaResult, $trial);
         return $progress;
     }
     return true;
 }
Esempio n. 3
0
 /**
  * @Route("/insert", name="project_course_insert")
  */
 public function insertAction(Request $request)
 {
     $entity = new Course();
     $entity->setProject($this->getActiveProject());
     $action = new InsertAction($this->crudInfo, $entity, CourseForm::class);
     $action->slug($this->getSlug());
     return $action->run($this, $request);
 }
 /**
  * @return Course
  */
 public function getCourse($id)
 {
     $this->transaction->requestTransaction();
     $item = Course::fetchByProject($this->conn, $id, $this->project);
     if (false === $item) {
         $this->transaction->requestRollback();
         throw new ItemNotFoundException('The specified item has not been found.', $id);
     }
     return $item;
 }
Esempio n. 5
0
 private function insertResult(Course $course, Area $area, User $user, $result)
 {
     self::$conn->insert(CourseTables::COURSE_RESULT_TBL, array('userId' => $user->getId(), 'courseId' => $course->getId(), 'trialNumber' => 1, 'startedAt' => time(), 'completedAt' => time(), 'result' => $result, 'totalQuestions' => 0, 'passedQuestions' => 0));
     self::$conn->insert(CourseTables::COURSE_AREA_RESULT_TBL, ['areaId' => $area->getId(), 'userId' => $user->getId(), 'courseId' => $course->getId()]);
 }
Esempio n. 6
0
 public function confirmGoodFaithCompletion(Area $area, User $user, Course $course)
 {
     $this->transaction->requestTransaction();
     try {
         $output = $course->confirmGoodFaithCompletion($this->conn, $area, $user);
         $this->spawnActivationEvent($area, $output);
     } catch (Exception $ex) {
         $this->transaction->requestRollback();
         throw $ex;
     }
 }