private function _initScreeningForm($subject_model) { $questions = \yii::$app->screeningquestion->getQuestions($this->getScreeningSession('screening_form_id')); $resource_model = Resource::findOne(['id' => $this->getScreeningSession('resource_id')]); $screening_form_model = ScreeningForm::findOne(['id' => $this->getScreeningSession('screening_form_id')]); $screening_entry_model = new \common\models\ScreeningEntry(); $screening_entry_model->screening_form_id = $this->getScreeningSession('screening_form_id'); $screening_entry_model->project_id = $this->getScreeningSession('project_id'); $screening_entry_model->subject_id = $subject_model->id; $screening_entry_model->researcher_id = \Yii::$app->user->identity->id; $screening_entry_model->screening_form_title = $screening_form_model->title; $screening_entry_model->resource_id = $this->getScreeningSession('resource_id'); $screening_entry_model->resource_title = $resource_model->title; if ($screening_entry_model->save() == false) { throw new \yii\web\HttpException(500, yii::t('app', 'An error occured.')); } $this->setScreeningSession('screening_hash', $screening_entry_model->hash); foreach ($questions as $q) { $model = new \common\models\ScreeningResponse(); $model->screening_question_id = $q['screening_question_id']; $model->screening_entry_id = $screening_entry_model->id; $model->subject_id = $subject_model->id; $model->save(); } return true; }
public function actionUpdate() { $screening_entry_model = ScreeningEntry::findOne(['hash' => $this->getScreeningSession('screening_hash')]); if ($screening_entry_model->researcher_id != yii::$app->user->id) { throw new \yii\web\HttpException(403, yii::t('app', 'Permission denied.')); } if ($screening_entry_model->progress_id == Types::$progress['published']['id']) { throw new \yii\web\HttpException(404, yii::t('app', 'Cannot locate this record.')); } if (yii::$app->request->isPost && $screening_entry_model != null) { foreach (yii::$app->request->post() as $k => $v) { if (strpos($k, 'question_') !== false) { $screening_question_id = str_replace('question_', '', $k); $screening_response_model = ScreeningResponse::findOne(['screening_question_id' => $screening_question_id, 'screening_entry_id' => $screening_entry_model->id]); if ($screening_response_model !== null) { $screening_response_model->response = $v; $screening_response_model->save(); } } } $this->redirect(['signature']); } return $this->render('update', ['responses' => yii::$app->screeningresponse->getResponses($this->getScreeningSession('screening_hash')), 'subject_model' => Subject::findOne($screening_entry_model->subject_id), 'screening_form_model' => ScreeningForm::findOne($screening_entry_model->screening_form_id), 'screening_questions' => \yii::$app->screeningresponse->getResponses($this->getScreeningSession('screening_hash')), 'count' => 1]); }
/** * @return \yii\db\ActiveQuery */ public function getScreeningResponses() { return $this->hasMany(ScreeningResponse::className(), ['screening_entry_id' => 'id']); }