add filters, update api, update api docs
This commit is contained in:
@ -2,9 +2,12 @@
|
||||
|
||||
namespace backend\modules\questionnaire\controllers;
|
||||
|
||||
use console\controllers\MovingController;
|
||||
use Yii;
|
||||
use backend\modules\questionnaire\models\Answer;
|
||||
use backend\modules\questionnaire\models\AnswerSearch;
|
||||
use yii\helpers\Console;
|
||||
use yii\helpers\Html;
|
||||
use yii\web\Controller;
|
||||
use yii\web\NotFoundHttpException;
|
||||
use yii\filters\VerbFilter;
|
||||
|
@ -83,12 +83,10 @@ class QuestionController extends Controller
|
||||
|
||||
if ($model->load(Yii::$app->request->post()) && $model->save()) {
|
||||
|
||||
if ($questionnaire_id !== null )
|
||||
{
|
||||
if ($questionnaire_id !== null) {
|
||||
return $this->redirect(['questionnaire/view', 'id' => $questionnaire_id]);
|
||||
}
|
||||
elseif ($question_type_id !== null)
|
||||
{
|
||||
elseif ($question_type_id !== null) {
|
||||
return $this->redirect(['question-type/view', 'id' => $question_type_id]);
|
||||
}
|
||||
|
||||
@ -113,12 +111,10 @@ class QuestionController extends Controller
|
||||
|
||||
if ($model->load(Yii::$app->request->post()) && $model->save()) {
|
||||
|
||||
if ($questionnaire_id !== null)
|
||||
{
|
||||
if ($questionnaire_id !== null) {
|
||||
return $this->redirect(['questionnaire/view', 'id' => $questionnaire_id]);
|
||||
}
|
||||
elseif ($question_type_id !== null)
|
||||
{
|
||||
elseif ($question_type_id !== null) {
|
||||
return $this->redirect(['question-type/view', 'id' => $question_type_id]);
|
||||
}
|
||||
|
||||
@ -139,15 +135,12 @@ class QuestionController extends Controller
|
||||
*/
|
||||
public function actionDelete(int $id, $questionnaire_id = null, $question_type_id = null)
|
||||
{
|
||||
|
||||
$this->findModel($id)->delete();
|
||||
|
||||
if ($questionnaire_id !== null)
|
||||
{
|
||||
if ($questionnaire_id !== null) {
|
||||
return $this->redirect(['questionnaire/view', 'id' => $questionnaire_id]);
|
||||
}
|
||||
elseif ($question_type_id !== null)
|
||||
{
|
||||
elseif ($question_type_id !== null) {
|
||||
return $this->redirect(['question-type/view', 'id' => $question_type_id]);
|
||||
}
|
||||
|
||||
@ -169,4 +162,16 @@ class QuestionController extends Controller
|
||||
|
||||
throw new NotFoundHttpException('The requested page does not exist.');
|
||||
}
|
||||
|
||||
// protected function goToView($questionnaire_id = null, $question_type_id = null)
|
||||
// {
|
||||
// if ($questionnaire_id !== null)
|
||||
// {
|
||||
// return $this->redirect(['questionnaire/view', 'id' => $questionnaire_id]);
|
||||
// }
|
||||
// elseif ($question_type_id !== null)
|
||||
// {
|
||||
// return $this->redirect(['question-type/view', 'id' => $question_type_id]);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
@ -153,7 +153,7 @@ class UserQuestionnaireController extends Controller
|
||||
$parents = $_POST['depdrop_parents'];
|
||||
if ($parents != null) {
|
||||
$cat_id = $parents[0];
|
||||
$categories = Questionnaire::questionnairesOfCategoryArr($cat_id);
|
||||
$categories = Questionnaire::questionnairesByCategoryArr($cat_id);
|
||||
|
||||
$formattedCatArr = array();
|
||||
foreach ($categories as $key => $value){
|
||||
|
@ -4,13 +4,14 @@ namespace backend\modules\questionnaire\models;
|
||||
|
||||
use yii\base\Model;
|
||||
use yii\data\ActiveDataProvider;
|
||||
use backend\modules\questionnaire\models\Answer;
|
||||
|
||||
/**
|
||||
* AnswerSearch represents the model behind the search form of `backend\modules\questionnaire\models\Answer`.
|
||||
*/
|
||||
class AnswerSearch extends Answer
|
||||
{
|
||||
public $questionnaire;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
@ -18,7 +19,7 @@ class AnswerSearch extends Answer
|
||||
{
|
||||
return [
|
||||
[['id', 'question_id', 'answer_flag', 'status'], 'integer'],
|
||||
[['answer_body', 'created_at', 'updated_at'], 'safe'],
|
||||
[['answer_body', 'questionnaire', 'created_at', 'updated_at'], 'safe'],
|
||||
];
|
||||
}
|
||||
|
||||
@ -40,13 +41,17 @@ class AnswerSearch extends Answer
|
||||
*/
|
||||
public function search($params)
|
||||
{
|
||||
$query = Answer::find()->with('question');
|
||||
$query = Answer::find()->with('question')->joinWith('questionnaire');
|
||||
|
||||
// add conditions that should always apply here
|
||||
|
||||
$dataProvider = new ActiveDataProvider([
|
||||
'query' => $query,
|
||||
]);
|
||||
$dataProvider->sort->attributes['title'] = [
|
||||
'asc' => ['questionnaire.title' => SORT_ASC],
|
||||
'desc' => ['questionnaire.title' => SORT_DESC],
|
||||
];
|
||||
|
||||
$this->load($params);
|
||||
|
||||
@ -68,6 +73,10 @@ class AnswerSearch extends Answer
|
||||
|
||||
$query->andFilterWhere(['like', 'answer_body', $this->answer_body]);
|
||||
|
||||
$query->joinWith(['questionnaire' => function($q) {
|
||||
$q->andFilterWhere(['like', 'questionnaire.id', $this->questionnaire]);
|
||||
}]);
|
||||
|
||||
return $dataProvider;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
use backend\modules\questionnaire\models\Questionnaire;
|
||||
use kartik\select2\Select2;
|
||||
use yii\helpers\Html;
|
||||
use yii\widgets\ActiveForm;
|
||||
|
||||
/* @var $this yii\web\View */
|
||||
/* @var $model backend\modules\questionnaire\models\AnswerSearch */
|
||||
/* @var $form yii\widgets\ActiveForm */
|
||||
?>
|
||||
|
||||
<div class="answer-search">
|
||||
|
||||
<?php $form = ActiveForm::begin([
|
||||
'action' => ['index'],
|
||||
'method' => 'get',
|
||||
]); ?>
|
||||
|
||||
<?= $form->field($model, 'questionnaire')->widget(Select2::className(),[
|
||||
'data' => Questionnaire::find()->select(['title', 'id'])->indexBy('id')->column(),
|
||||
'options' => ['placeholder' => 'Выберите анкету'],
|
||||
'pluginOptions' => [
|
||||
'allowClear' => true
|
||||
],
|
||||
])->label('Анкета') ?>
|
||||
|
||||
<div class="form-group">
|
||||
<?= Html::submitButton('Поиск', ['class' => 'btn btn-primary']) ?>
|
||||
</div>
|
||||
|
||||
<?php ActiveForm::end(); ?>
|
||||
|
||||
</div>
|
@ -1,12 +1,11 @@
|
||||
<?php
|
||||
|
||||
use backend\modules\questionnaire\models\Question;
|
||||
use backend\modules\questionnaire\models\Questionnaire;
|
||||
use common\helpers\AnswerHelper;
|
||||
use common\helpers\StatusHelper;
|
||||
use kartik\select2\Select2;
|
||||
use yii\helpers\Html;
|
||||
use yii\grid\GridView;
|
||||
use yii\widgets\ActiveForm;
|
||||
|
||||
/* @var $this yii\web\View */
|
||||
/* @var $searchModel backend\modules\questionnaire\models\AnswerSearch */
|
||||
@ -17,33 +16,32 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
?>
|
||||
<div class="answer-index">
|
||||
|
||||
<?php // echo $this->render('_search', ['model' => $searchModel]); ?>
|
||||
|
||||
<p>
|
||||
<?= Html::a('Создать новый ответ', ['create'], ['class' => 'btn btn-success']) ?>
|
||||
</p>
|
||||
|
||||
<!-- --><?php
|
||||
//
|
||||
// echo Select2::widget([
|
||||
// 'model' => \backend\modules\questionnaire\models\Questionnaire::findOne()->where(['id'=>1]),
|
||||
// 'attribute' => 'state_2',
|
||||
// 'data' => 1,
|
||||
// 'options' => ['placeholder' => 'Select a state ...'],
|
||||
// 'pluginOptions' => [
|
||||
// 'allowClear' => true
|
||||
// ],
|
||||
// ]);
|
||||
//
|
||||
// ?>
|
||||
<?= $this->render('_search_by_questionnaire', [
|
||||
'model' => $searchModel,
|
||||
]) ?>
|
||||
|
||||
<?= GridView::widget([
|
||||
'dataProvider' => $dataProvider,
|
||||
'filterModel' => $searchModel,
|
||||
'columns' => [
|
||||
['class' => 'yii\grid\SerialColumn'],
|
||||
// [
|
||||
// 'filter' => Questionnaire::find()->select(['title', 'id'])->indexBy('id')->column(),
|
||||
// 'label' => 'Анкета',
|
||||
// 'attribute' => 'questionnaire',
|
||||
// 'value' => 'questionnaire.title'
|
||||
// ],
|
||||
[
|
||||
'filter' => Question::find()->select(['question_body', 'id'])->where(['!=', 'question_type_id', '1'])->indexBy('id')->column(),
|
||||
'filter' => Question::find()->select(['question_body', 'id'])->where(['!=', 'question_type_id', '1'])
|
||||
->andWhere(['questionnaire_id' => ''])
|
||||
->indexBy('id')->column(),
|
||||
// 'filter' => function($model){
|
||||
// return \yii\helpers\ArrayHelper::getValue(Question::find()->where(['questionnaire_id' => $model->questionnaire_id]), ['id', 'title']) ;
|
||||
// },
|
||||
'attribute' => 'question_id',
|
||||
'value' => 'question.question_body'
|
||||
],
|
||||
@ -68,3 +66,4 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
],
|
||||
]); ?>
|
||||
</div>
|
||||
|
||||
|
@ -42,7 +42,7 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
|
||||
<?= GridView::widget([
|
||||
'dataProvider' => $questionDataProvider,
|
||||
'filterModel' => $questionSearchModel,
|
||||
// 'filterModel' => $questionSearchModel,
|
||||
'columns' => [
|
||||
['class' => 'yii\grid\SerialColumn'],
|
||||
'question_body',
|
||||
|
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use backend\modules\questionnaire\models\Questionnaire;
|
||||
use kartik\select2\Select2;
|
||||
use yii\helpers\Html;
|
||||
use yii\widgets\ActiveForm;
|
||||
|
||||
/* @var $this yii\web\View */
|
||||
/* @var $model backend\modules\questionnaire\models\QuestionSearch */
|
||||
/* @var $form yii\widgets\ActiveForm */
|
||||
?>
|
||||
|
||||
<div class="question-search">
|
||||
|
||||
<?php $form = ActiveForm::begin([
|
||||
'action' => ['index'],
|
||||
'method' => 'get',
|
||||
]); ?>
|
||||
|
||||
<?= $form->field($model, 'questionnaire_id')->widget(Select2::className(),[
|
||||
'data' => Questionnaire::find()->select(['title', 'id'])->indexBy('id')->column(),
|
||||
'options' => ['placeholder' => 'Выберите анкету'],
|
||||
'pluginOptions' => [
|
||||
'allowClear' => true
|
||||
],
|
||||
])->label('Анкета') ?>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<?= Html::submitButton('Поиск', ['class' => 'btn btn-primary']) ?>
|
||||
</div>
|
||||
|
||||
<?php ActiveForm::end(); ?>
|
||||
|
||||
</div>
|
@ -20,6 +20,10 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
<?= Html::a('Создать вопрос', ['create'], ['class' => 'btn btn-success']) ?>
|
||||
</p>
|
||||
|
||||
<?= $this->render('_search_by_questionnaire', [
|
||||
'model' => $searchModel,
|
||||
]) ?>
|
||||
|
||||
<?= GridView::widget([
|
||||
'dataProvider' => $dataProvider,
|
||||
'filterModel' => $searchModel,
|
||||
@ -31,11 +35,11 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
'filter' => QuestionType::find()->select(['question_type', 'id'])->indexBy('id')->column(),
|
||||
'value' => 'questionType.question_type'
|
||||
],
|
||||
[
|
||||
'attribute' => 'questionnaire_id',
|
||||
'filter' => Questionnaire::find()->select(['title', 'id'])->indexBy('id')->column(),
|
||||
'value' => 'questionnaire.title',
|
||||
],
|
||||
// [
|
||||
// 'attribute' => 'questionnaire_id',
|
||||
// 'filter' => Questionnaire::find()->select(['title', 'id'])->indexBy('id')->column(),
|
||||
// 'value' => 'questionnaire.title',
|
||||
// ],
|
||||
'question_priority',
|
||||
'next_question',
|
||||
[
|
||||
|
@ -72,7 +72,7 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
|
||||
<?= GridView::widget([
|
||||
'dataProvider' => $answerDataProvider,
|
||||
'filterModel' => $answerSearchModel,
|
||||
// 'filterModel' => $answerSearchModel,
|
||||
'columns' => [
|
||||
['class' => 'yii\grid\SerialColumn'],
|
||||
'answer_body',
|
||||
|
@ -50,7 +50,7 @@ YiiAsset::register($this);
|
||||
|
||||
<?= GridView::widget([
|
||||
'dataProvider' => $questionnaireDataProvider,
|
||||
'filterModel' => $questionnaireSearchModel,
|
||||
// 'filterModel' => $questionnaireSearchModel,
|
||||
'columns' => [
|
||||
['class' => 'yii\grid\SerialColumn'],
|
||||
'title',
|
||||
|
@ -65,7 +65,7 @@ YiiAsset::register($this);
|
||||
|
||||
<?= GridView::widget([
|
||||
'dataProvider' => $questionDataProvider,
|
||||
'filterModel' => $questionSearchModel,
|
||||
// 'filterModel' => $questionSearchModel,
|
||||
'columns' => [
|
||||
['class' => 'yii\grid\SerialColumn'],
|
||||
'question_body',
|
||||
|
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
use backend\modules\questionnaire\models\Questionnaire;
|
||||
use backend\modules\questionnaire\models\UserQuestionnaire;
|
||||
use kartik\select2\Select2;
|
||||
use yii\helpers\Html;
|
||||
use yii\widgets\ActiveForm;
|
||||
|
||||
/* @var $this yii\web\View */
|
||||
/* @var $model backend\modules\questionnaire\models\QuestionSearch */
|
||||
/* @var $form yii\widgets\ActiveForm */
|
||||
?>
|
||||
|
||||
<div class="question-search">
|
||||
|
||||
<?php $form = ActiveForm::begin([
|
||||
'action' => ['index'],
|
||||
'method' => 'get',
|
||||
]); ?>
|
||||
|
||||
<?= $form->field($model, 'user_questionnaire_uuid')->widget(Select2::className(),[
|
||||
// 'data' => Questionnaire::find()->select(['title', 'id'])->indexBy('id')->column(),
|
||||
'data' => Questionnaire::find()->joinWith('userQuestionnaires')->select(['title', 'uuid',])->column(),
|
||||
'options' => ['placeholder' => 'Выберите анкету'],
|
||||
'pluginOptions' => [
|
||||
'allowClear' => true
|
||||
],
|
||||
])->label('Анкета') ?>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<?= Html::submitButton('Поиск', ['class' => 'btn btn-primary']) ?>
|
||||
</div>
|
||||
|
||||
<?php ActiveForm::end(); ?>
|
||||
|
||||
</div>
|
||||
<?php
|
@ -20,6 +20,13 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
<?= Html::a('Новый ответ пользователя', ['create'], ['class' => 'btn btn-success']) ?>
|
||||
</p>
|
||||
|
||||
<?php
|
||||
//echo $this->render('_search_by_questionnaire', [
|
||||
// 'model' => $searchModel,
|
||||
// ])
|
||||
?>
|
||||
|
||||
|
||||
<?= GridView::widget([
|
||||
'dataProvider' => $dataProvider,
|
||||
'filterModel' => $searchModel,
|
||||
|
Reference in New Issue
Block a user