/**
  * Get question option answer's stats info
  * @throws BadRequestHttpException
  * @return array, [{"option": "Yes", "count": 12}]
  */
 public function actionAnswers()
 {
     $params = $this->getQuery();
     if (empty($params['questionId'])) {
         throw new BadRequestHttpException(Yii::t('common', 'parameters_missing'));
     }
     $question = Question::findByPk(new MongoId($params['questionId']));
     if (empty($question) || $question->type === Question::TYPE_INPUT) {
         throw new InvalidParameterException(Yii::t('content', 'invalid_question'));
     }
     //turn unix timestamp to string
     $startDateStr = isset($params['startTime']) ? TimeUtil::msTime2String($params['startTime'], 'Y-m-d') : null;
     $endDateStr = isset($params['endTime']) ? TimeUtil::msTime2String($params['endTime'], 'Y-m-d') : null;
     $stats = StatsQuestionnaireAnswerDaily::getQuestionOptionStats(new MongoId($params['questionId']), $startDateStr, $endDateStr);
     $statsMap = ArrayHelper::map($stats, 'option', 'count');
     $options = [];
     $count = [];
     foreach ($question->options as $option) {
         $options[] = $option['content'];
         $count[] = empty($statsMap[$option['content']]) ? 0 : $statsMap[$option['content']];
     }
     return ['options' => $options, 'count' => $count];
 }
 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;
 }