/** * Get all answers by quesrionnaire and questionId */ public function actionQuestionAnswers() { $params = $this->getQuery(); if (empty($params['questionnaireId']) && empty($params['questionId'])) { throw new BadRequestHttpException(Yii::t('common', 'parameters_missing')); } $questionnaireId = new MongoId($params['questionnaireId']); $questionId = new MongoId($params['questionId']); $page = intval($this->getQuery('page', 1)); $perPage = intval($this->getQuery('per-page', 20)); $items = QuestionnaireLog::getAnswersByQuestionnaireId($questionnaireId, $questionId, $page, $perPage); foreach ($items as &$item) { $item['name'] = empty($item['name']) ? '' : $item['name']; } $totalCount = QuestionnaireLog::countByQuestionnaireId($questionnaireId); $meta = ['totalCount' => $totalCount, 'pageCount' => ceil($totalCount / $perPage), 'currentPage' => $page, 'perPage' => $perPage]; return ['items' => $items, '_meta' => $meta]; }
public function actionView($id) { $questionnaireId = new MongoId($id); $questionnaire = Questionnaire::findByPk($questionnaireId); if (empty($questionnaire)) { throw new InvalidParameterException(Yii::t('common', 'invalid_questionnaire')); } $questionnaire = $questionnaire->toArray(); $questionnaire['userCount'] = QuestionnaireLog::countByQuestionnaireId($questionnaireId); foreach ($questionnaire['questions'] as &$question) { $questionId = new MongoId($question['id']); $stats = StatsQuestionnaireAnswerDaily::getQuestionOptionStats($questionId); $statsMap = ArrayHelper::map($stats, 'option', 'count'); if ($question['type'] !== Question::TYPE_INPUT) { foreach ($question['options'] as &$option) { $option['count'] = empty($statsMap[$option['content']]) ? 0 : $statsMap[$option['content']]; } } } return $questionnaire; }