add filters, refactoring

This commit is contained in:
iIronside
2021-11-08 12:41:39 +03:00
parent 5be69526ac
commit c1c24fc5e4
42 changed files with 12364 additions and 443 deletions

View File

@ -1,5 +1,8 @@
<?php
use backend\modules\questionnaire\models\QuestionnaireCategory;
use common\helpers\StatusHelper;
use common\models\User;
use kartik\select2\Select2;
use yii\helpers\Html;
use yii\helpers\Url;
@ -17,8 +20,11 @@ use kartik\depdrop\DepDrop;
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($modelCategory, 'title')
->dropDownList($modelCategory->getIdTitlesArr(),
<?= $form->field($modelCategory, 'title')->dropDownList(QuestionnaireCategory::find()
->select(['title', 'id'])
->where(['status' => '1'])
->indexBy('id')
->column(),
[
'id' => 'cat-id',
'prompt' => 'Выберите'
@ -39,7 +45,7 @@ use kartik\depdrop\DepDrop;
<?= $form->field($model, 'user_id')->widget(Select2::class,
[
'data' => \yii\helpers\ArrayHelper::map(\common\models\User::find()->all(),'id', 'username'),
'data' => User::find()->select(['username', 'id'])->indexBy('id')->column(),
'options' => ['placeholder' => 'Выберите пользователя','class' => 'form-control'],
'pluginOptions' => [
'placeholder' => 'Выберите',
@ -49,7 +55,7 @@ use kartik\depdrop\DepDrop;
); ?>
<?= $form->field($model, 'status')->dropDownList(
\common\helpers\StatusHelper::statusList(),
StatusHelper::statusList(),
[
'prompt' => 'Выберите'
]

View File

@ -1,7 +1,11 @@
<?php
use common\helpers\StatusHelper;
use common\models\User;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\grid\GridView;
use backend\modules\questionnaire\models\Questionnaire;
/* @var $this yii\web\View */
/* @var $searchModel backend\modules\questionnaire\models\UserQuestionnaireSearch */
@ -23,17 +27,13 @@ $this->params['breadcrumbs'][] = $this->title;
['class' => 'yii\grid\SerialColumn'],
[
'attribute' => 'questionnaire_id',
'filter' => \yii\helpers\ArrayHelper::map(backend\modules\questionnaire\models\Questionnaire::find()->all(), 'id', 'title'),
'value' => function($model){
return $model->getQuestionnaireTitle();
}
'filter' => Questionnaire::find()->select(['title', 'id'])->indexBy('id')->column(),
'value' => 'questionnaire.title'
],
[
'attribute' => 'user_id',
'filter' => \yii\helpers\ArrayHelper::map(\common\models\User::find()->all(), 'id', 'username'),
'value' => function($model){
return $model->getUserName();
}
'filter' => ArrayHelper::map(User::find()->all(), 'id', 'username'),
'value' => 'user.username'
],
'score',
[
@ -46,9 +46,9 @@ $this->params['breadcrumbs'][] = $this->title;
[
'attribute' => 'status',
'format' => 'raw',
'filter' => \common\helpers\StatusHelper::statusList(),
'filter' => StatusHelper::statusList(),
'value' => function ($model) {
return \common\helpers\StatusHelper::statusLabel($model->status);
return StatusHelper::statusLabel($model->status);
},
],
'created_at',

View File

@ -1,7 +1,11 @@
<?php
use common\helpers\ScoreCalculatorHelper;
use common\helpers\AnswerHelper;
use common\helpers\StatusHelper;
use yii\bootstrap\Modal;
use yii\grid\GridView;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\web\YiiAsset;
use yii\widgets\DetailView;
@ -51,11 +55,11 @@ YiiAsset::register($this);
'id',
[
'attribute' => 'questionnaires_id',
'value' => $questionnaire,
'value' => ArrayHelper::getValue($model, 'questionnaire.title'),
],
[
'attribute' => 'user_id',
'value' => $user,
'value' => ArrayHelper::getValue($model, 'user.username'),
],
'uuid',
'score',
@ -69,9 +73,7 @@ YiiAsset::register($this);
[
'attribute' => 'status',
'format' => 'raw',
'value' => function($model) {
return common\helpers\StatusHelper::statusLabel($model->status);
},
'value' => StatusHelper::statusLabel($model->status),
],
'created_at',
'updated_at',
@ -96,7 +98,7 @@ YiiAsset::register($this);
'class' => 'btn btn-success',
],
]);
if($model->checkAnswerFlagsForNull())
if(ScoreCalculatorHelper::checkAnswerFlagsForNull($model))
{
echo 'Ответы проверены. Посчитать баллы?';
echo Html::a('Посчитать баллы', ['calculate-score', 'id' => $model->id], [
@ -129,13 +131,11 @@ YiiAsset::register($this);
'response_body',
[
'attribute' => 'question_id',
'value' => function($model){
return $model->getQuestionBody();
}
'value' => 'question.question_body'
],
[
'attribute' => 'Тип вопроса',
'value' => function($model){
'value' => function($model) {
return $model->getQuestionType();
}
],
@ -143,18 +143,20 @@ YiiAsset::register($this);
'attribute' => 'answer_flag',
'format' => 'raw',
'value' => function ($model) {
return \common\helpers\AnswerHelper::answerFlagLable($model->answer_flag);
return AnswerHelper::answerFlagLable($model->answer_flag);
},
],
[
'class' => 'yii\grid\ActionColumn',
'template' => '{update}', // {delete}
'template' => '{view} {update} {delete}',
'controller' => 'user-response',
'buttons' => [
'update' => function ($url,$model) {
return Html::a(
'<span class="glyphicon glyphicon-pencil"></span>',
['user-response/update', 'id' => $model['id']]);
['user-response/update', 'id' => $model['id'], 'user_questionnaire_id' => $model['user_questionnaire_id']]);
},
],
],