コード例 #1
0
 /**
  * Возвращает прогресс пользователя
  * @return array|null
  */
 public function getProgress()
 {
     $query = 'SELECT test_id, count(case when answers.is_true then 1 end) as true_count
                   FROM questions
                       JOIN answers ON questions.id = answers.question_id
                       JOIN tests_progress ON answers.id = tests_progress.answer_id
                       JOIN tests ON tests_progress.test_id = tests.id
                       WHERE tests.is_passed AND tests.profile_id = ' . self::profileId() . '
                       GROUP BY test_id;';
     $progress = DB::select(DB::raw($query));
     if ($progress) {
         $data = array();
         $rowData = array();
         foreach ($progress as $row) {
             $query = 'SELECT start_datetime, pass_duration, levels.name as level
                           FROM tests
                           JOIN levels ON tests.level_id = levels.id
                           WHERE tests.id = ' . $row->test_id . ';';
             $test = DB::select(DB::raw($query))[0];
             $datetime = explode(' ', $test->start_datetime);
             $rowData['start_date'] = ApiController::convertDateToClient($datetime[0]);
             $rowData['start_time'] = explode('.', $datetime[1])[0];
             $rowData['start_datetime'] = $test->start_datetime;
             $rowData['pass_duration'] = $test->pass_duration;
             $rowData['level'] = $test->level;
             $rowData['true_count'] = $row->true_count;
             $rowData['id'] = $row->test_id;
             array_push($data, $rowData);
         }
         usort($data, array($this, 'cmp_date_start'));
         return $data;
     } else {
         return null;
     }
 }