add column description to questionnaire table
This commit is contained in:
@ -15,6 +15,7 @@ use yii\helpers\ArrayHelper;
|
||||
* @property int $category_id
|
||||
* @property string $title
|
||||
* @property int $status
|
||||
* @property string $description
|
||||
* @property string $created_at
|
||||
* @property string $updated_at
|
||||
* @property string $time_limit
|
||||
@ -55,7 +56,7 @@ class Questionnaire extends ActiveRecord
|
||||
[['category_id', 'status'], 'integer'],
|
||||
[['created_at', 'updated_at', 'time_limit'], 'safe'],
|
||||
['title', 'unique'],
|
||||
[['title'], 'string', 'max' => 255],
|
||||
[['title', 'description'], 'string', 'max' => 255],
|
||||
['status', 'default', 'value' => true],
|
||||
[['category_id'], 'exist', 'skipOnError' => true, 'targetClass' => QuestionnaireCategory::className(), 'targetAttribute' => ['category_id' => 'id']],
|
||||
];
|
||||
@ -70,6 +71,7 @@ class Questionnaire extends ActiveRecord
|
||||
'id' => 'ID',
|
||||
'category_id' => 'Категория',
|
||||
'title' => 'Название анкеты',
|
||||
'description' => 'Описание',
|
||||
'status' => 'Статус',
|
||||
'created_at' => 'Created At',
|
||||
'updated_at' => 'Updated At',
|
||||
|
@ -179,18 +179,9 @@ class UserQuestionnaire extends ActiveRecord
|
||||
|
||||
public static function findActiveUserQuestionnaires($user_id): array
|
||||
{
|
||||
$models = self::find()
|
||||
return self::find()
|
||||
->where(['user_id' => $user_id])
|
||||
->andWhere(['not', ['user_questionnaire.status' => 0]])
|
||||
->all();
|
||||
|
||||
$modelsArr = array();
|
||||
foreach ($models as $model) {
|
||||
$modelsArr[] = array_merge($model->toArray(), [
|
||||
'questionnaire_title' => $model->getQuestionnaireTitle()
|
||||
]);
|
||||
}
|
||||
|
||||
return $modelsArr;
|
||||
}
|
||||
}
|
||||
|
@ -1,78 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace common\services;
|
||||
|
||||
use common\models\Question;
|
||||
use common\models\UserQuestionnaire;
|
||||
use yii\base\InvalidConfigException;
|
||||
use yii\web\NotFoundHttpException;
|
||||
use yii\web\ServerErrorHttpException;
|
||||
|
||||
class UserQuestionnaireService
|
||||
{
|
||||
public static function getQuestionnaireList($user_id): array
|
||||
{
|
||||
$userQuestionnaireModels = UserQuestionnaire::findActiveUserQuestionnaires($user_id);
|
||||
array_walk($userQuestionnaireModels, function (&$arr) {
|
||||
unset(
|
||||
$arr['questionnaire_id'],
|
||||
$arr['created_at'],
|
||||
$arr['updated_at'],
|
||||
$arr['id']
|
||||
);
|
||||
});
|
||||
return $userQuestionnaireModels;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws NotFoundHttpException
|
||||
* @throws InvalidConfigException
|
||||
*/
|
||||
public static function calculateScore($user_questionnaire_uuid): UserQuestionnaire
|
||||
{
|
||||
$userQuestionnaireModel = UserQuestionnaire::findOne(['uuid' => $user_questionnaire_uuid]);
|
||||
if (empty($userQuestionnaireModel)) {
|
||||
throw new NotFoundHttpException('The questionnaire with this uuid does not exist');
|
||||
}
|
||||
ScoreCalculatorService::rateResponses($userQuestionnaireModel);
|
||||
if (ScoreCalculatorService::checkAnswerFlagsForNull($userQuestionnaireModel)) {
|
||||
ScoreCalculatorService::calculateScore($userQuestionnaireModel);
|
||||
} else {
|
||||
$userQuestionnaireModel->status = 3;
|
||||
$userQuestionnaireModel->save();
|
||||
}
|
||||
return $userQuestionnaireModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws ServerErrorHttpException
|
||||
*/
|
||||
public static function getQuestionNumber($user_questionnaire_uuid): array
|
||||
{
|
||||
$userQuestionnaireModel = UserQuestionnaire::findOne(['uuid' => $user_questionnaire_uuid]);
|
||||
if (empty($userQuestionnaireModel)) {
|
||||
throw new ServerErrorHttpException('Not found UserQuestionnaire');
|
||||
}
|
||||
$count = Question::find()
|
||||
->where(['questionnaire_id' => $userQuestionnaireModel->questionnaire_id])
|
||||
->andWhere(['status' => 1])
|
||||
->count();
|
||||
return array('question_number' => $count);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws ServerErrorHttpException
|
||||
*/
|
||||
public static function getPointsNumber($user_questionnaire_uuid)
|
||||
{
|
||||
$userQuestionnaireModel = UserQuestionnaire::findOne(['uuid' => $user_questionnaire_uuid]);
|
||||
if (empty($userQuestionnaireModel)) {
|
||||
throw new ServerErrorHttpException('Not found UserQuestionnaire');
|
||||
}
|
||||
$pointSum = Question::find()
|
||||
->where(['questionnaire_id' => $userQuestionnaireModel->questionnaire_id])
|
||||
->andWhere(['status' => 1])
|
||||
->sum('score');
|
||||
return array('sum_point' => $pointSum);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user