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