Esempio n. 1
0
 /**
  * @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;
 }
Esempio n. 2
0
 /**
  * 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]);
 }