/** * @param string $evalId * @param bool $newRecord * @return bool */ public function save($evalId, $newRecord = true) { // fetch the form data $evaElements = []; $model = new EvaluationDetails(); $transaction = Yii::app()->db->beginTransaction(); try { if (!$newRecord) { $model->deleteAll('evalId=:evaId', [':evaId' => $evalId]); } foreach ($this->_properties as $attrNameAndId => $attrVal) { $model->unsetAttributes(); $attrParams = explode("_", $attrNameAndId); $evaElements['evalId'] = $evalId; $evaElements['evalElementsId'] = $attrParams[1]; $evaElements['value'] = is_array($attrVal) ? json_encode($attrVal) : $attrVal; $model->attributes = $evaElements; //print_r($model->attributes); die; $model->setIsNewRecord(true); $model->save(); } //die; $transaction->commit(); } catch (Exception $e) { Yii::log($e->getMessage(), 'error', 'models.EvalForm'); $transaction->rollBack(); EvaluationHeader::model()->deleteByPk($evalId); return false; } //var_dump($evaElements, $model); die; return true; }
/** * actionSelectEvaAttributes */ public function actionSelectEvaAttributes() { $this->setPageTitle('Select Evaluation Attributes'); $evaDetails = $this->getEvaDetails(); //print_r($evaDetails); die; // Check if the evaluation is component based and check if components are selected $componentsCriteria = new CDbCriteria(); $componentsCriteria->condition = 't.evalId=:evaId AND evaElements.inputName=:name'; $componentsCriteria->with = ['evaluationHead', 'evaElements', 'options']; $componentsCriteria->params = [':evaId' => $this->evaContextId, ':name' => 'evaType']; $rsComponents = EvaluationDetails::model()->find($componentsCriteria); //print_r($rsComponents); die; if ($rsComponents->options->label == 'Component' && empty($rsComponents->evaluationHead->components)) { Yii::app()->user->setFlash('notice', 'Please select the surveillance components to evaluate first'); $this->redirect('selectComponents'); } $this->docName = 'evaAttributes'; if (isset($_POST['pageId'])) { SystemController::savePage('selectEvaAttributes'); } $page = SystemController::getPageContent($this->docName); $groups = EvaQuestionGroups::model()->find("section='evaCriteriaMethod'"); $groupsArray = json_decode($groups->questions); $group = $this->getQuestionGroup($groupsArray); // check if risk based options should be included $rsRiskBased = EvaluationDetails::model()->with('options')->find('evalId=:eva AND evalElementsId=:elemId', [':eva' => $this->evaContextId, ':elemId' => self::RISK_BASED_ELEMENT_ID]); if (isset($rsRiskBased->options) && $rsRiskBased->options->label == 'Yes') { array_push($group, self::RISK_BASED_OPTS_GROUP); } // var_dump($group); die; $attributesCriteria = new CDbCriteria(); $attributesCriteria->with = ['attributeTypes', 'attribute']; $attributesCriteria->order = 'relevance DESC'; $attributesCriteria->condition = 'surveillanceObj=' . $this->objectiveId; $attributesCriteria->addInCondition("evaQuestionGroup", $group); //$attributesCriteria->params = [':survObj' => $this->objectiveId, ':group' => [$group]]; $attributes = ModelToArray::convertModelToArray(EvaAttributesMatrix::model()->findAll($attributesCriteria)); $evaluationModel = EvaluationHeader::model()->findByPk($this->evaContextId, ['select' => 'evalId, evaAttributes']); //print_r($attributes); die; //$evaAttributes = isset($evaluationModel->evaAttributes) ? json_decode($evaluationModel->evaAttributes) : []; $evaluationModel->scenario = 'selectEvaAttributes'; if (isset($_POST['saveEvaAttr'])) { // $evaluationModel->evaAttributes = json_encode($_POST['EvaluationHeader']['evaAttributes']); $evaluationModel->evaAttributes = isset($_POST['EvaluationHeader']) ? json_encode($_POST['EvaluationHeader']['evaAttributes']) : null; if ($evaluationModel->validate() && $evaluationModel->update(['evaAttributes'])) { Yii::app()->user->setFlash('success', 'Evaluation attributes saved successfully'); if ($_POST['saveEvaAttr'] == 'Next') { $this->redirect('selectEvaAssMethod'); return; } } //var_dump($_POST, $evaluationModel); die; } $this->render('selectEvaAttributes', ['attributes' => $attributes, 'evaDetails' => $evaDetails, 'page' => $page, 'evaluationModel' => $evaluationModel]); }