public function actionGetQuestionGroups() { // get question groups $rsQuestionGroups = EvaQuestionGroups::model()->find("section='evaCriteriaMethod'"); $questionGroups = json_decode($rsQuestionGroups->questions); //Get questions $rsQuestions = EvaluationQuestion::model()->findAll(['condition' => "flag='final'"], ['select' => "*, CAST(`questionNumber` as SIGNED) AS castedColumn"]); $panels = []; foreach ($questionGroups as $group => $questions) { //print_r($questions); die; //asort($questions); $panels['Group ' . $group] = '<ul class="rb">'; foreach ($rsQuestions as $evaQuestion) { if (in_array($evaQuestion->evalQuestionId, $questions)) { $panels['Group ' . $group] .= '<li>' . $evaQuestion->questionNumber . ' ' . $evaQuestion->question . '</li>'; } } $panels['Group ' . $group] .= '</ul>'; } // print_r($panels); die; $this->renderPartial('questionGroupPopup', ['panels' => $panels], false, true); }
/** * actionEvalQuestionList * @param string $questionId */ public function actionEvalQuestionList($questionId = null) { Yii::log("actionEvalQuestionList called", "trace", self::LOG_CAT); $this->setPageTitle('Select evaluation question'); $model = EvaluationHeader::model()->findByPk($this->evaContextId); //print_r($_POST); die; if (!empty($_POST['EvaluationHeader']['questionId'])) { $model->questionId = $_POST['EvaluationHeader']['questionId']; $model->update(); $session = Yii::app()->session; $sessionEvaParams = $session['evaContext']; //print_r(Yii::app()->session['evaContext']); die; $sessionEvaParams['questionId'] = $model->questionId; $session['evaContext'] = $sessionEvaParams; Yii::app()->user->setFlash('success', 'Evaluation question saved successfully'); if (isset($_POST['next'])) { $this->redirect('selectComponents'); return; } } // $model = new EvaluationQuestion(); $questionCriteria = new CDbCriteria(); $questionCriteria->select = "*, CAST(`questionNumber` as SIGNED) AS castedColumn"; $questionCriteria->condition = "flag='final'"; $questionCriteria->order = 'castedColumn ASC, questionNumber ASC'; // $questionsRs = EvaQuestionHasCriteriaAndMethod::model()->with(['question', 'method', 'criteria'])->findAll(); $questionsRs = EvaluationQuestion::model()->with(['methods', 'criteria'])->findAll($questionCriteria); //print_r($questionsRs); die; $questionArray = []; foreach ($questionsRs as $questionData) { $questionArray[$questionData->evalQuestionId] = ['questionId' => $questionData->evalQuestionId, 'questionNumber' => $questionData->questionNumber, 'question' => $questionData->question, 'method' => '', 'criteria' => '']; foreach ($questionData->methods as $evaMethod) { $questionArray[$questionData->evalQuestionId]['method'] .= $evaMethod->name . ', '; } foreach ($questionData->criteria as $evaCriteria) { $questionArray[$questionData->evalQuestionId]['criteria'] .= $evaCriteria->name . ', '; } $questionArray[$questionData->evalQuestionId]['criteria'] = rtrim($questionArray[$questionData->evalQuestionId]['criteria'], ", "); $questionArray[$questionData->evalQuestionId]['method'] = rtrim($questionArray[$questionData->evalQuestionId]['method'], ", "); } // $currentQuestion = EvaluationHeader::model()->findByPk($this->evaContextId); // $model->question = $currentQuestion->questionId; $elements = ContextController::getDefaultElements(); $elements['title'] = '<h3>Select Evaluation Question</h3>'; $elements['elements'] = ['<table id="questionSelect" width="100%" border="0" cellspacing="0" cellpadding="0">', '<thead><tr></tr><th></th><th>Question Number</th><th>Question</th><th>Evaluation Criteria</th>' . '<th>Evaluation Method</th></tr></thead>', '<tbody></tbody>', '</table>']; $elements['buttons'] = ["save" => ["label" => 'Save', 'type' => 'submit'], 'next' => ['label' => 'Next', 'type' => 'submit']]; if (isset($questionId)) { $model->questionId = $questionId; } if (!isset($model->questionId)) { $model->questionId = 0; } $form = new CForm($elements, $model); $this->docName = 'evalQuestionList'; if (isset($_POST['pageId'])) { SystemController::savePage('evalQuestionList'); } $page = SystemController::getPageContent($this->docName); $this->render('evaQuestionList', ['form' => $form, 'questionId' => $model->questionId, 'questions' => $questionArray, 'page' => $page]); }
/** * @param $questions * @return array */ private function getAssociationData($questions) { $questionArray = json_decode($questions, true); $econMethods = array_keys($questionArray); $methodQuestions = []; foreach ($questionArray as $questionGroup) { //print_r($questionArray); die; $methodQuestions = array_merge($methodQuestions, $questionGroup); } //print_r($methodQuestions); die; $questionCriteria = new CDbCriteria(); $questionCriteria->addInCondition('evalQuestionId', $methodQuestions); $rsQuestions = EvaluationQuestion::model()->findAll($questionCriteria); $econMethodCriteria = new CDbCriteria(); $econMethodCriteria->addInCondition('id', $econMethods); $rsEconMethod = EconEvaMethods::model()->findAll($econMethodCriteria); $associationData = []; foreach ($rsEconMethod as $methodKey => $method) { //print_r($questionArray); //print_r($method); $associationData[$methodKey]['methodName'] = $method->buttonName; $associationData[$methodKey]['methodId'] = $method->id; $associationData[$methodKey]['questions'] = '<ul>'; foreach ($rsQuestions as $question) { if (isset(array_flip($questionArray[$method->id])[$question->evalQuestionId])) { $associationData[$methodKey]['questions'] .= CHtml::tag('li', [], $question->questionNumber . ' ' . $question->question); } } $associationData[$methodKey]['questions'] .= '</ul>'; } return $associationData; }
<?php /* @var $this EvaQuestionGroupsController */ /* @var $model EvaQuestionGroups */ /* @var $form CActiveForm */ ?> <div class="form"> <?php $form = $this->beginWidget('CActiveForm', array('id' => 'eva-question-groups-form', 'enableAjaxValidation' => false)); $evaluationQuestions = CHtml::listData(EvaluationQuestion::model()->findAll('flag=:flag', [':flag' => 'final']), 'evalQuestionId', function ($question) { return $question->questionNumber . ' ' . $question->question; }); $economicMethods = CHtml::listData(EconEvaMethods::model()->findAll(), 'id', 'buttonName'); ?> <p class="note">Fields with <span class="required">*</span> are required.</p> <?php echo $form->errorSummary($model); ?> <div class="row"> <?php echo $form->labelEx($model, 'method'); ?> <?php echo $form->dropdownlist($model, 'method', $economicMethods, ['class' => 'chozen']); ?> <?php
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer $id the ID of the model to be loaded * @return EvaluationQuestion the loaded model * @throws CHttpException */ public function loadModel($id) { $model = EvaluationQuestion::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }