コード例 #1
0
 /**
  * Creates a dataset that contains information about participant numbers over time within a
  * single area.
  * 
  * @param Area $area
  * @return StatDateDataset
  */
 public function fetchAreaParticipantsOverTime(Area $area)
 {
     $data = $this->conn->fetchAll('SELECT * FROM `' . EdkTables::STAT_AREA_PARTICIPANT_TIME_TBL . '` ' . 'WHERE `projectId` = :projectId AND `areaId` = :areaId ' . 'ORDER BY `datePoint`', [':projectId' => $area->getProject()->getId(), ':areaId' => $area->getId()]);
     $engine = new StatDateDataset(StatDateDataset::TYPE_PACKED);
     return $engine->dataset('participantNum')->process($data);
 }
コード例 #2
0
 public function findTotalIndividualResultsForArea(Area $area)
 {
     $items = $this->conn->fetchAll('SELECT c.`id` AS `courseId`, c.`name` AS `courseName`, u.`id` AS `userId`, u.`name` AS `userName`, u.`avatar`, ' . 'ur.`result`, ur.`totalQuestions`, ur.`passedQuestions`, ur.`completedAt`, ur.`trialNumber` ' . 'FROM `' . CourseTables::COURSE_TBL . '` c ' . 'INNER JOIN `' . CoreTables::AREA_MEMBER_TBL . '` m ON m.`areaId` = :areaId ' . 'INNER JOIN `' . CoreTables::USER_TBL . '` u ON u.`id` = m.`userId` ' . 'LEFT JOIN `' . CourseTables::COURSE_RESULT_TBL . '` ur ON ur.`userId` = u.`id` AND c.`id` = ur.`courseId` ' . 'WHERE c.`isPublished` = 1 AND u.`active` = 1 AND c.`projectId` = :projectId ' . 'ORDER BY c.`displayOrder`, u.`name`', [':areaId' => $area->getId(), ':projectId' => $area->getProject()->getId()]);
     foreach ($items as &$item) {
         TestResult::processResults($item);
     }
     return $items;
 }
コード例 #3
0
 private function spawnActivationEvent(Area $area, $output)
 {
     if ($output instanceof CourseProgress) {
         $this->eventDispatcher->dispatch(MilestoneEvents::ACTIVATION_EVENT, new ActivationEvent($area->getProject(), $area->getEntity(), 'course.completed', function () use($output) {
             if ($output->getMandatoryCourseNum() == 0) {
                 return NewMilestoneStatus::create(100);
             } else {
                 return NewMilestoneStatus::create((int) ($output->getPassedCourseNum() / $output->getMandatoryCourseNum() * 100));
             }
         }));
     }
 }