add filters, update api, update api docs
This commit is contained in:
@ -45,21 +45,15 @@ class AnswerHelper
|
||||
$class = 'label label-warning';
|
||||
$content = 'Не проверен';
|
||||
|
||||
if ($answer_flag > 0)
|
||||
{
|
||||
if ($answer_flag > 0) {
|
||||
$class = 'label label-success';
|
||||
$answer_flag < 1 ? $content = $answer_flag *100 . '%' : $content = 'Верен';
|
||||
}
|
||||
else if ($answer_flag === 0.0)
|
||||
{
|
||||
else if ($answer_flag === 0.0) {
|
||||
$class = 'label label-danger';
|
||||
$content = 'Не верен';
|
||||
}
|
||||
|
||||
return Html::tag('span', $content,
|
||||
[
|
||||
'class' => $class,
|
||||
]
|
||||
);
|
||||
return Html::tag('span', $content, ['class' => $class,]);
|
||||
}
|
||||
}
|
@ -13,21 +13,17 @@ class ScoreCalculatorHelper
|
||||
{
|
||||
$responses = $user_questionnaire->getUserResponses()->all();
|
||||
|
||||
foreach ($responses as $response)
|
||||
{
|
||||
foreach ($responses as $response) {
|
||||
self::rateOneResponse($response);
|
||||
}
|
||||
}
|
||||
|
||||
public static function rateOneResponse(UserResponse $response)
|
||||
{
|
||||
if ($response->answer_flag === null && $response->getQuestionTypeValue() != 1) // not open question
|
||||
{
|
||||
if ($response->getQuestionTypeValue() != 1) { // not open question
|
||||
$correct_answers = $response->getCorrectAnswers();
|
||||
foreach ($correct_answers as $correct_answer)
|
||||
{
|
||||
if ($response->response_body === $correct_answer['answer_body'])
|
||||
{
|
||||
foreach ($correct_answers as $correct_answer) {
|
||||
if ($response->response_body === $correct_answer['answer_body']) {
|
||||
$response->answer_flag = 1;
|
||||
$response->save();
|
||||
return;
|
||||
@ -41,8 +37,7 @@ class ScoreCalculatorHelper
|
||||
public static function checkAnswerFlagsForNull(UserQuestionnaire $userQuestionnaire): bool
|
||||
{
|
||||
$responses = $userQuestionnaire->getUserResponses()->AsArray()->all();
|
||||
foreach ($responses as $response)
|
||||
{
|
||||
foreach ($responses as $response) {
|
||||
if (ArrayHelper::isIn(null, $response))
|
||||
return false;
|
||||
}
|
||||
@ -56,13 +51,10 @@ class ScoreCalculatorHelper
|
||||
|
||||
$score = null;
|
||||
$user_correct_answers_num = null;
|
||||
foreach ($responses_questions as $response_question)
|
||||
{
|
||||
if(self::isCorrect($response_question['answer_flag']))
|
||||
{
|
||||
foreach ($responses_questions as $response_question) {
|
||||
if(self::isCorrect($response_question['answer_flag'])) {
|
||||
$user_correct_answers_num += 1;
|
||||
switch ($response_question['question']['question_type_id'])
|
||||
{
|
||||
switch ($response_question['question']['question_type_id']) {
|
||||
case '1': // open question
|
||||
$score += $response_question['answer_flag'] * $response_question['question']['score'];
|
||||
break;
|
||||
|
@ -10,8 +10,7 @@ class TimeHelper
|
||||
{
|
||||
public static function limitTime($time_limit)
|
||||
{
|
||||
if ($time_limit === null)
|
||||
{
|
||||
if ($time_limit === null) {
|
||||
return 'Не ограничено';
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace common\models;
|
||||
|
||||
use yii\base\InvalidConfigException;
|
||||
use yii\behaviors\TimestampBehavior;
|
||||
use yii\db\ActiveQuery;
|
||||
use yii\db\Expression;
|
||||
@ -79,6 +80,20 @@ class Answer extends \yii\db\ActiveRecord
|
||||
return $this->hasOne(Question::className(), ['id' => 'question_id']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws InvalidConfigException
|
||||
*/
|
||||
public function getQuestionnaire(): ActiveQuery
|
||||
{
|
||||
return $this->hasOne(Questionnaire::className(), ['id' => 'questionnaire_id'])
|
||||
->viaTable('question', ['id' => 'question_id']);
|
||||
}
|
||||
|
||||
// public function getUserQuestionnaire()
|
||||
// {
|
||||
// return $this->hasOne(\backend\modules\questionnaire\models\UserQuestionnaire::className(), ['id'])
|
||||
// }
|
||||
|
||||
static function numCorrectAnswers($question_id)
|
||||
{
|
||||
return Answer::find()
|
||||
|
@ -123,7 +123,7 @@ class Questionnaire extends ActiveRecord
|
||||
return $this->hasMany(UserQuestionnaire::className(), ['questionnaire_id' => 'id']);
|
||||
}
|
||||
|
||||
public static function questionnairesOfCategoryArr($category_id): array
|
||||
public static function questionnairesByCategoryArr($category_id): array
|
||||
{
|
||||
$categories = self::find()->where(['category_id' => $category_id, 'status' => '1'])->all();
|
||||
return ArrayHelper::map($categories, 'id', 'title');
|
||||
|
@ -3,6 +3,8 @@
|
||||
namespace common\models;
|
||||
|
||||
use common\helpers\UUIDHelper;
|
||||
use Exception;
|
||||
use yii\base\InvalidConfigException;
|
||||
use yii\behaviors\TimestampBehavior;
|
||||
use yii\db\ActiveQuery;
|
||||
use yii\db\ActiveRecord;
|
||||
@ -134,26 +136,18 @@ class UserQuestionnaire extends ActiveRecord
|
||||
return $this->getUser()->one()->username;
|
||||
}
|
||||
|
||||
public static function getQuestionnaireByUser($id): array
|
||||
{
|
||||
$questionnaire = ArrayHelper::map(self::find()->where(['user_id' => $id])
|
||||
->with('questionnaire')->asArray()->all(),'id','questionnaire.title');
|
||||
|
||||
|
||||
$formatQuestionnaireArr = array();
|
||||
foreach ($questionnaire as $key => $value){
|
||||
$formatQuestionnaireArr[] = array('id' => $key, 'name' => $value);
|
||||
}
|
||||
|
||||
return $formatQuestionnaireArr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws InvalidConfigException
|
||||
*/
|
||||
public function getQuestions()
|
||||
{
|
||||
return $this->hasMany(Question::className(), ['id' => 'question_id'])
|
||||
->viaTable('user_response', ['user_questionnaire_uuid' => 'uuid']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws InvalidConfigException
|
||||
*/
|
||||
public function numCorrectAnswersWithoutOpenQuestions()
|
||||
{
|
||||
return $this->hasMany(Answer::className(), ['question_id' => 'question_id'])
|
||||
@ -163,6 +157,9 @@ class UserQuestionnaire extends ActiveRecord
|
||||
->count();
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws InvalidConfigException
|
||||
*/
|
||||
public function numOpenQuestionsAnswers()
|
||||
{
|
||||
return $this->hasMany(Question::className(), ['id' => 'question_id'])
|
||||
@ -171,7 +168,15 @@ class UserQuestionnaire extends ActiveRecord
|
||||
->count();
|
||||
}
|
||||
|
||||
public static function findActiveUserQuestionnaires($user_id)
|
||||
/**
|
||||
* @throws Exception
|
||||
*/
|
||||
public static function getQuestionnaireId($uuid)
|
||||
{
|
||||
return ArrayHelper::getValue(self::find()->where(['uuid' => $uuid])->one(), 'id');
|
||||
}
|
||||
|
||||
public static function findActiveUserQuestionnaires($user_id): array
|
||||
{
|
||||
return self::find()->where(['user_id' => $user_id])
|
||||
->andWhere(['status' => '1'])
|
||||
|
Reference in New Issue
Block a user