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]);
 }
예제 #3
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getScreeningResponses()
 {
     return $this->hasMany(ScreeningResponse::className(), ['screening_entry_id' => 'id']);
 }