add column description to questionnaire table

This commit is contained in:
iIronside
2023-10-26 11:37:04 +03:00
parent 93f51f39c6
commit 700f79eb5c
9 changed files with 66 additions and 27 deletions

View File

@ -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',

View File

@ -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;
}
}

View File

@ -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);
}
}