/**
  * 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;
 }