/**
  * Mise  àjour d une fiche
  * @param $id the ID of the model to be displayed
  */
 public function actionUpdate($id)
 {
     $model = Questionnaire::model()->findByPk(new MongoID($id));
     $questionForm = new QuestionForm();
     $questionGroup = new QuestionGroup();
     // collect user input data
     if (isset($_POST['QuestionForm'])) {
         $questionForm->attributes = $_POST['QuestionForm'];
         //traitement ajout de question
         if ($questionForm->validate()) {
             $model = $this->saveQuestionnaireNewQuestion($model, $questionForm);
         }
     }
     if (isset($_POST['QuestionGroup'])) {
         $questionGroup->attributes = $_POST['QuestionGroup'];
         //copie du titre sur l option fr
         $questionGroup->title_fr = $questionGroup->title;
         if ($questionGroup->validate()) {
             $model = $this->saveQuestionnaireNewGroup($model, $questionGroup);
         }
     }
     //set du model sur la questionForm pour generer l arborescende de position de question
     $questionForm->questionnaire = $model;
     $this->render('update', array('model' => $model, 'questionForm' => $questionForm, 'questionGroup' => $questionGroup));
 }
示例#2
0
 public function actionQuestionList()
 {
     $form = new QuestionForm();
     // database related activity
     if (isset($_POST['action'])) {
         $response = new stdClass();
         switch ($_POST['action']) {
             case 1:
                 // print_r($_POST); exit;
                 $form = new QuestionForm();
                 $form->attributes = $_POST['QuestionForm'];
                 if ($form->validate()) {
                     $data = $_POST['QuestionForm'];
                     $test = RsTest::model()->findByPk($data['test_id']);
                     if ($test) {
                         $data['category_no'] = $test->am;
                     }
                     $criteria = new CDbCriteria();
                     $criteria->condition = 'test_id=:test_id';
                     $criteria->addCondition('category=:category');
                     $criteria->addCondition('no=:no');
                     $criteria->params = array(":test_id" => $data['test_id'], ":category" => $data['category'], ":no" => $data['no']);
                     $question = RsQuestion::model()->find($criteria) ? RsQuestion::model()->find($criteria) : new RsQuestion();
                     foreach ($data as $key => $value) {
                         $question->{$key} = $value;
                     }
                     if ($question->save()) {
                         $response->status = 1;
                         $response->id = $question->id;
                         $response->message = Yii::t("admin", "question.save.success");
                     } else {
                         $response->status = 0;
                         $response->message = Yii::t("admin", "question.save.fail");
                     }
                 }
                 if ($form->hasErrors()) {
                     $response->status = 2;
                     $response->message = CHtml::errorSummary($form, '', '', array('class' => 'alert alert-error alert-block hide-message'));
                 }
                 break;
             case 2:
                 // print_r($_POST);
                 $response = new stdClass();
                 $response->status = 1;
                 $response->message = Yii::t("admin", "question.saveAll.success");
                 $validate = true;
                 foreach ($_POST['data'] as $data) {
                     $form = new QuestionForm();
                     foreach ($data as $key => $value) {
                         $form->{$key} = $value;
                     }
                     $form->validate();
                     // print_r($form);
                     if ($form->hasErrors()) {
                         $validate = false;
                         $response->status = 2;
                         $response->message = CHtml::errorSummary($form, '', '', array('class' => 'alert alert-error alert-block hide-message'));
                     }
                 }
                 if ($validate) {
                     foreach ($_POST['data'] as $data) {
                         $test = RsTest::model()->findByPk($data['test_id']);
                         if ($test) {
                             $data['category_no'] = $test->am;
                         }
                         $criteria = new CDbCriteria();
                         $criteria->condition = 'test_id=:test_id';
                         $criteria->addCondition('category=:category');
                         $criteria->addCondition('no=:no');
                         $criteria->params = array(":test_id" => $data['test_id'], ":category" => $data['category'], ":no" => $data['no']);
                         $question = RsQuestion::model()->find($criteria) ? RsQuestion::model()->find($criteria) : new RsQuestion();
                         foreach ($data as $key => $value) {
                             $question->{$key} = $value;
                         }
                         if (!$question->save()) {
                             $response->status = 0;
                             $response->message = Yii::t("admin", "question.saveAll.fail");
                         }
                     }
                 }
                 break;
             default:
                 # code...
                 break;
         }
         echo json_encode($response);
         exit;
     }
     // if not set t_id then return to test list
     if (!isset($_GET['t_id'])) {
         $this->redirect(array('admin/test/'));
     }
     // if not set c_id then return to category list of t_id
     if (!isset($_GET['c_id'])) {
         $this->redirect(array('admin/test/'));
     }
     $criteria = new CDbCriteria();
     $criteria->condition = 'test_id=:test_id';
     $criteria->addCondition('category=:category_id');
     $criteria->order = 'no ASC';
     $criteria->params = array(':test_id' => $_GET['t_id'], ':category_id' => $_GET['c_id']);
     $test = RsTest::model()->findByPk($_GET['t_id']);
     // whether the requested test exist
     if (!$test) {
         $this->redirect(array('admin/test/'));
     }
     $tempCat = explode(',', $test->category_am);
     if (!isset($tempCat[$_GET['c_id'] - 1])) {
         // whether user requested c_id bigger than am
         $this->redirect(array('admin/test/'));
     }
     $tempQuestions = RsQuestion::model()->findAll($criteria);
     $questions = array();
     if ($tempQuestions) {
         foreach ($tempQuestions as $q) {
             $questions[$q->no] = $q;
         }
     }
     $data = array();
     $data['numberOfQuestion'] = $tempCat[$_GET['c_id'] - 1];
     $data['test'] = $test;
     $data['questions'] = $questions;
     $data['category_id'] = $_GET['c_id'];
     $data['model'] = $form;
     $this->render('questionList', $data);
 }
 /**
  * Mise  àjour d un formulaire /mode edition
  * @param $id the ID of the model to be displayed
  */
 public function actionUpdate($id)
 {
     $model = Questionnaire::model()->findByPk(new MongoID($id));
     $questionBlocForm = new QuestionBlocForm();
     $questionForm = new QuestionForm();
     $questionGroup = new QuestionGroup();
     // collect user input data
     if (isset($_POST['QuestionForm'])) {
         $questionForm->attributes = $_POST['QuestionForm'];
         if ($questionForm->validatewithId($model)) {
             if ($questionForm->help == "") {
                 $questionForm->help = null;
             }
             //traitement ajout de question
             if ($questionForm->validate()) {
                 $model = $model->saveQuestionnaireNewQuestion($questionForm);
             } else {
                 Yii::app()->user->setFlash('error', Yii::t('common', 'questionNotAdded'));
             }
         } else {
             Yii::app()->user->setFlash('error', Yii::t('common', 'questionNotAdded'));
         }
     }
     if (isset($_POST['QuestionGroup'])) {
         $questionGroup->attributes = $_POST['QuestionGroup'];
         if ($questionGroup->validatewithId($model)) {
             //copie du titre sur l option fr
             $questionGroup->title_fr = $questionGroup->title;
             if ($questionGroup->validate()) {
                 $model = $model->saveQuestionnaireNewGroup($questionGroup);
             }
         } else {
             Yii::app()->user->setFlash('error', Yii::t('common', 'tabNotAdded'));
         }
     }
     if (isset($_POST['QuestionBlocForm'])) {
         $questionBlocForm->attributes = $_POST['QuestionBlocForm'];
         if ($questionBlocForm->validatewithId($model)) {
             $questionBloc = QuestionBloc::model()->findByPk(new MongoId($questionBlocForm->title));
             $questionBlocForm->title_fr = $questionBlocForm->title;
             $computedGroup = new QuestionGroup();
             $computedGroup->copy($questionBlocForm, $questionBloc);
             if ($computedGroup->validate()) {
                 $model = $model->saveQuestionnaireNewGroup($computedGroup);
             }
             if (isset($questionBloc->questions) && $questionBloc->questions != null && count($questionBloc->questions) > 0) {
                 foreach ($questionBloc->questions as $question => $value) {
                     $currentQuestion = Question::model()->findByPk(new MongoId($value));
                     $questionForm->copy($currentQuestion, $computedGroup);
                     $model->saveQuestionnaireNewQuestionBloc($questionForm);
                 }
             }
         } else {
             Yii::app()->user->setFlash('error', Yii::t('common', 'tabNotAdded'));
         }
     }
     if (isset($_POST['old_onglet'])) {
         foreach ($model->questions_group as $onglet) {
             if ($onglet->id == $_POST['old_onglet']) {
                 $onglet->title = $_POST['new_onglet'];
                 $onglet->title_fr = $_POST['new_onglet'];
                 if ($model->save()) {
                     Yii::app()->user->setFlash('success', Yii::t('common', 'tabUpdated'));
                 } else {
                     Yii::app()->user->setFlash('error', Yii::t('common', 'tabNotUpdated'));
                 }
             }
         }
     }
     if (isset($_POST['old_question'])) {
         foreach ($model->questions_group as $onglet) {
             foreach ($onglet->questions as $question) {
                 if ($question->id == $_POST['old_question']) {
                     $question->label = $_POST['new_question'];
                     $question->label_fr = $_POST['new_question'];
                     if ($model->save()) {
                         Yii::app()->user->setFlash('success', Yii::t('common', 'questionUpdated'));
                     } else {
                         Yii::app()->user->setFlash('error', Yii::t('common', 'questionNotUpdated'));
                     }
                 }
             }
         }
     }
     //  set du model sur la questionForm pour generer l arborescende de position de question
     $questionForm->questionnaire = $model;
     $questionGroup->questionnaire = $model;
     $this->render('update', array('model' => $model, 'questionForm' => $questionForm, 'questionGroup' => $questionGroup, 'questionBloc' => $questionBlocForm));
 }