public function run() { $category = MappingCategories::findOne($this->mappingCategoryId); $route = Yii::$app->controller->route; $request_id = Yii::$app->request->get('id'); $ignore_route = array('site/changepassword', 'mapping/index'); if ($route == 'mapping/update-answer' && $request_id == $this->mappingCategoryId || in_array($route, $ignore_route)) { return false; } else { if ($category) { return $this->render('mapping/modal', ['category' => $category]); } } }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = MappingCategories::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'duration' => $this->duration, 'sort_order' => $this->sort_order, 'is_active' => $this->is_active]); $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'attributes_id', $this->attributes_id]); return $dataProvider; }
/** * @return array|\yii\db\ActiveRecord[] */ public function getCategories($options = array(), $asArray = true, $all = true) { //if (empty($this->categories)) { $categories = MappingCategories::find()->orderBy('sort_order, name'); if (!empty($options)) { $categories->where($options); } if ($asArray) { $categories->asArray(); } if ($all == true) { $this->categories = $categories->all(); } else { $this->categories = $categories->one(); } //} return $this->categories; }
/** * Displays a single Members model. * @param integer $id * @return mixed */ public function actionView($id) { // get mapping category //$pageModel = CmsPages::findOne(['id' => GeneralSettings::findOne(['name' => 'mapping_page_id'])->value]); //$categoryModel = MappingCategories::findOne($pageModel->mapping_id); $categoriesModel = MappingCategories::findAll(['is_active' => 1]); // get questions answers /*$questionsAnswers = new ActiveDataProvider([ 'query' => $categoryModel->getQuestions()->with('questionsAnswers'), ]);*/ // get attributes Answers /*$attributesAnswers = new ActiveDataProvider([ 'query' => MembersAttributes::find($categoryModel->attributes_id)->with('attributesAnswers'), ]);*/ $weightTracker = new ActiveDataProvider(['query' => MembersWeightTracker::find(['member_id' => $id]), 'sort' => ['defaultOrder' => ['created_at' => SORT_DESC]]]); $diaryNutritions = new ActiveDataProvider(['query' => DiaryNutrition::find()->where(['member_id' => $id])->select(["*, DATE_FORMAT(created_at,'%m-%d-%Y') as c"])->groupBy(['c']), 'pagination' => ['pageSize' => 5, 'validatePage' => false], 'sort' => ['defaultOrder' => ['created_at' => SORT_DESC]]]); $diaryTraining = new ActiveDataProvider(['query' => DiaryTraining::find()->where(['member_id' => $id])->select(["*, DATE_FORMAT(created_at,'%m-%d-%Y') as c"])->groupBy(['c']), 'pagination' => ['pageSize' => 5, 'validatePage' => false], 'sort' => ['defaultOrder' => ['created_at' => SORT_DESC]]]); return $this->render('view', ['model' => $this->findModel($id), 'categoriesModel' => $categoriesModel, 'weightTracker' => $weightTracker, 'diaryNutritions' => $diaryNutritions, 'diaryTraining' => $diaryTraining]); }
public function actionMapping_old_171115() { if (!Yii::$app->user->isGuest) { $user = Yii::$app->getUser()->getIdentity(); //@TODO new logic to find out if there are answers /*$answers = MembersQuestionsAnswers::find(['member_id' => $user->id])->count(); if ($answers > 0) { $user->status = User::STATUS_ACTIVE; if ($user->save()) { return Yii::$app->response->redirect(array('members/index')); } else { Yii::$app->getSession()->setFlash('warning', Yii::t('errors', 'Can not update user status. Please contact system administrator')); } }*/ $settingsModel = GeneralSettings::findOne(['name' => 'mapping_page_id']); $pageModel = CmsPages::findOne(['id' => $settingsModel->value]); $categoryModel = MappingCategories::findOne(['id' => $pageModel->mapping_id]); $attributesModel = MembersAttributes::findAll(['id' => $categoryModel->attributes_id]); $questionsModel = MappingQuestions::find(['category_id' => $categoryModel->id])->with('fieldsTypes')->all(); $questionsAnswers = new MembersQuestionsAnswers($pageModel->category_id); $attributesAnswers = new MembersAttributesAnswers($categoryModel->attributes_id); if (Yii::$app->request->post()) { $mappingQuestionsSaved = false; $mappingAttributesSaved = false; if ($questionsAnswers->load(Yii::$app->request->post()) && $questionsAnswers->validate()) { foreach ($questionsAnswers->attributes as $attribute_id => $attribute) { $attributesArray = explode('_', $attribute_id); if (count($attributesArray) > 1) { list($name, $id) = $attributesArray; if (!($model = MembersQuestionsAnswers::findOne(['question_id' => $id, 'member_id' => Yii::$app->getUser()->id]))) { $model = new MembersQuestionsAnswers(); } $has_option = false; if ($questionsModel = MappingQuestions::findOne($id)) { $type_id = $questionsModel->type_id; $has_option = FieldsTypes::findOne($type_id)->has_options; } if ($has_option) { $model->value = ''; $model->option_id = ''; if ($optionsModel = MappingQuestionsToOptions::findOne($questionsAnswers->{$attribute_id})) { $model->value = $optionsModel->title; $model->option_id = $optionsModel->id; } } else { $model->value = $questionsAnswers->{$attribute_id}; } $model->question_id = $id; $model->member_id = Yii::$app->getUser()->id; $model->save(); } } $mappingQuestionsSaved = true; } if ($attributesAnswers->load(Yii::$app->request->post()) && $attributesAnswers->validate()) { foreach ($attributesAnswers->attributes as $attribute_id => $attribute) { $attributesArray = explode('_', $attribute_id); if (count($attributesArray) > 1) { list($name, $id) = $attributesArray; if (!($model = MembersAttributesAnswers::findOne(['attribute_id' => $id, 'member_id' => Yii::$app->getUser()->id]))) { $model = new MembersAttributesAnswers(); } $has_option = false; if ($questionsModel = MembersAttributes::findOne($id)) { $type_id = $questionsModel->type_id; $has_option = FieldsTypes::findOne($type_id)->has_options; $filedTypeTitle = FieldsTypes::findOne($type_id)->title; } if ($has_option) { $model->value = ''; $model->option_id = ''; if ($optionsModel = MembersAttributesToOptions::findOne($attributesAnswers->{$attribute_id})) { $model->value = $optionsModel->title; $model->option_id = $optionsModel->id; } } else { $model->value = $attributesAnswers->{$attribute_id}; if (isset($filedTypeTitle) && $filedTypeTitle == 'Date Picker') { //@TODO replace datepicker with some database constatnt value; $model->value = strtotime($attributesAnswers->{$attribute_id}); } } $model->attribute_id = $id; $model->member_id = Yii::$app->getUser()->id; $model->save(); } } $mappingAttributesSaved = true; } if ($mappingQuestionsSaved && $mappingAttributesSaved) { $user = Yii::$app->getUser()->getIdentity(); $user->status = User::STATUS_ACTIVE; if ($user->save()) { return Yii::$app->response->redirect(array('members')); } else { Yii::$app->getSession()->setFlash('warning', Yii::t('errors', 'Can not save mapping data. Please contact system administrator')); } } else { $categoryModel = MappingCategories::findOne(['id' => $pageModel->category_id]); $attributesModel = MembersAttributes::find(['id in ' => $categoryModel->attributes_id])->with('fieldsTypes')->all(); $questionsModel = MappingQuestions::find(['category_id' => $categoryModel->id])->with('fieldsTypes')->all(); return $this->render('mapping', ['questionsAnswers' => $questionsAnswers, 'attributesAnswers' => $attributesAnswers, 'pageModel' => $pageModel, 'categoryModel' => $categoryModel, 'questionsModel' => $questionsModel, 'attributesModel' => $attributesModel]); } } else { return $this->render('mapping', ['questionsAnswers' => $questionsAnswers, 'attributesAnswers' => $attributesAnswers, 'pageModel' => $pageModel, 'categoryModel' => $categoryModel, 'questionsModel' => $questionsModel, 'attributesModel' => $attributesModel]); } } else { return Yii::$app->response->redirect(array('site/login')); } }
$category_options['options'] = [$model->category_id => ['Selected' => 'selected']]; $questions_condition['category_id'] = $model->category_id; $question_options['options'] = [$model->question_id => ['Selected' => 'selected']]; $answers_condition['question_id'] = $model->question_id; $answers_options['options'] = [$model->options_id => ['Selected' => 'selected']]; } $question_items = array(); $options_items = array(); if (!$model->isNewRecord) { $question_items = \yii\helpers\ArrayHelper::map(\backend\models\MappingQuestions::find()->joinWith('fieldsTypes')->where($questions_condition)->all(), 'id', 'title'); $options_items = \yii\helpers\ArrayHelper::map(\backend\models\MappingQuestionsToOptions::find()->where($answers_condition)->all(), 'id', 'title'); } ?> <?php echo $form->field($model, 'category_id')->dropDownList(\yii\helpers\ArrayHelper::map(\backend\models\MappingCategories::find()->all(), 'id', 'name'), $category_options)->label(Yii::t('backend', 'Select Categories')); ?> <?php echo $form->field($model, 'question_id')->dropDownList($question_items, $question_options)->label(Yii::t('backend', 'Select Question')); ?> <?php echo $form->field($model, 'options_id')->dropDownList($options_items, $answers_options)->label(Yii::t('backend', 'Select Answers')); ?> <?php echo $form->field($model, 'progress')->textInput(); ?> <?php
/** * @return \yii\db\ActiveQuery */ public function getCategory() { return $this->hasOne(MappingCategories::className(), ['id' => 'category_id']); }
/** * Displays homepage. * * @return mixed */ public function actionIndex() { if (!Yii::$app->user->isGuest) { Yii::$app->MappingComponent->process(); $steps = Yii::$app->MappingComponent->getSteps(); if (empty($steps['view'])) { $user = Yii::$app->getUser()->getIdentity(); $user->status = User::STATUS_ACTIVE; if ($user->save()) { return Yii::$app->response->redirect(array('members/index')); } else { Yii::$app->getSession()->setFlash('warning', Yii::t('errors', 'Can not update user status. Please contact system administrator')); } } $settingsModel = GeneralSettings::findOne(['name' => 'mapping_page_id']); //$pageModel = CmsPages::findOne(['id' => $settingsModel->value]); return $this->render('mapping', ['steps' => $steps]); $user = Yii::$app->getUser()->getIdentity(); //@TODO new logic to find out if there are answers /*$answers = MembersQuestionsAnswers::find(['member_id' => $user->id])->count(); if ($answers > 0) { $user->status = User::STATUS_ACTIVE; if ($user->save()) { return Yii::$app->response->redirect(array('members/index')); } else { Yii::$app->getSession()->setFlash('warning', Yii::t('errors', 'Can not update user status. Please contact system administrator')); } }*/ if (Yii::$app->request->post()) { $mappingQuestionsSaved = false; if ($questionsAnswers->load(Yii::$app->request->post()) && $questionsAnswers->validate()) { foreach ($questionsAnswers->attributes as $attribute_id => $attribute) { $attributesArray = explode('_', $attribute_id); if (count($attributesArray) > 1) { list($name, $id) = $attributesArray; if (!($model = MembersQuestionsAnswers::findOne(['question_id' => $id, 'member_id' => Yii::$app->getUser()->id]))) { $model = new MembersQuestionsAnswers(); } $has_option = false; if ($questionsModel = MappingQuestions::findOne($id)) { $type_id = $questionsModel->type_id; $has_option = FieldsTypes::findOne($type_id)->has_options; } if ($has_option) { $model->value = ''; $model->option_id = ''; if ($optionsModel = MappingQuestionsToOptions::findOne($questionsAnswers->{$attribute_id})) { $model->value = $optionsModel->title; $model->option_id = $optionsModel->id; } } else { $model->value = $questionsAnswers->{$attribute_id}; } $model->question_id = $id; $model->member_id = Yii::$app->getUser()->id; $model->save(); } } $mappingQuestionsSaved = true; } if ($mappingQuestionsSaved) { $user = Yii::$app->getUser()->getIdentity(); //$user->status = User::STATUS_ACTIVE; if ($user->save()) { return Yii::$app->response->redirect(array('members')); } else { Yii::$app->getSession()->setFlash('warning', Yii::t('errors', 'Can not save mapping data. Please contact system administrator')); } } } //$categoryModel = MappingCategories::findOne(['id' => $pageModel->mapping_id]); $categoryModel = MappingCategories::find()->where(['is_active' => 1])->orderBy('sort_order')->all(); $questionsModel = \backend\models\MappingQuestions::find()->where(['category_id' => $category->id])->with('fieldsTypes')->all(); //$questionsModel = MappingQuestions::find()->where(['category_id' => $categoryModel->id])->with('fieldsTypes')->all(); return $this->render('mapping', ['questionsAnswers' => $questionsAnswers, 'pageModel' => $pageModel, 'categoryModel' => $categoryModel]); } else { return Yii::$app->response->redirect(array('site/login')); } }
<?php use yii\helpers\Html; /* @var $this yii\web\View */ /* @var $model backend\models\MappingQuestions */ $this->title = Yii::t('backend', 'Create Question'); $this->params['breadcrumbs'][] = ['label' => Yii::t('backend', 'Mapping Categories'), 'url' => ['index']]; $this->params['breadcrumbs'][] = ['label' => \backend\models\MappingCategories::findOne($category_id)->name . ' ' . Yii::t('backend', 'Questions'), 'url' => ['mapping-categories/view', 'id' => $category_id]]; $this->params['breadcrumbs'][] = $this->title; $this->registerJsFile(Yii::getAlias('@web/js/questions.js'), ['depends' => ['yii\\web\\YiiAsset', 'yii\\bootstrap\\BootstrapAsset']]); ?> <div class="mapping-questions-create"> <h1><?php echo Html::encode($this->title); ?> </h1> <?php echo $this->render('_form', ['model' => $model, 'category_id' => $category_id, 'optionsDataProvider' => $optionsDataProvider, 'optionsModel' => $optionsModel, 'languages' => $languages, 'languageDefault' => $languageDefault]); ?> </div>
/** * Finds the MappingCategories model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return MappingCategories the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = MappingCategories::find()->where(['id' => $id])->multilingual()->one()) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
use yii\helpers\Html; use yii\grid\GridView; use backend\models\MappingCategoriesLang; use backend\models\MappingCategories; /* @var $this yii\web\View */ /* @var $dataProvider yii\data\ActiveDataProvider */ $this->title = Yii::t('backend', 'Mapping Categories'); $this->params['breadcrumbs'][] = $this->title; ?> <div class="mapping-categories-index"> <h1><?php echo Html::encode($this->title); ?> </h1> <p> <?php echo Html::a(Yii::t('backend', 'Create Category'), ['create'], ['class' => 'btn btn-success']); ?> </p> <?php ?> <?php echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [['class' => 'yii\\grid\\SerialColumn'], 'name', array('attribute' => 'is_active', 'filter' => Html::activeDropDownList($searchModel, 'is_active', MappingCategories::dropdownActive(), ['class' => 'form-control', 'prompt' => Yii::t('backend', 'All')]), 'format' => 'boolean'), 'duration', 'sort_order', ['class' => 'yii\\grid\\ActionColumn']]]); ?> </div>