コード例 #1
0
ファイル: QuestionController.php プロジェクト: Eximagen/sochi
 /**
  *
  * @return array
  */
 public function createAction()
 {
     if ($this->getRequest()->isPost()) {
         $params = $this->getRequest()->getParams();
         try {
             $this->getQuestionCatalog()->beginTransaction();
             $question = QuestionFactory::createFromArray($params);
             $question->setStatus(Question::$Status["Active"]);
             if ($params["matrix"]) {
                 $question->setMatrix(Question::$Matrix["IsMatrix"]);
             }
             $this->getQuestionCatalog()->create($question);
             if ($question->isMatrix()) {
                 foreach ($params["row"] as $rowInfo) {
                     $row = new QuestionMatrixResponse();
                     $row->setDescription($rowInfo["description"]);
                     $row->setIdQuestion($question->getIdQuestion());
                     $row->setHeaderType(QuestionMatrixResponse::$HeaderType["Row"]);
                     $this->getMatrixResponseCatalog()->create($row);
                 }
                 foreach ($params["col"] as $colInfo) {
                     $col = new QuestionMatrixResponse();
                     $col->setDescription($colInfo["description"]);
                     $col->setIdQuestion($question->getIdQuestion());
                     $col->setHeaderType(QuestionMatrixResponse::$HeaderType["Col"]);
                     $this->getMatrixResponseCatalog()->create($col);
                 }
             }
             if ($question->getIdType() == Question::$Type["Multiple"]) {
                 foreach ($params["option"] as $optionInfo) {
                     $option = new QuestionMultipleResponse();
                     $option->setIdQuestion($question->getIdQuestion());
                     $option->setDescription($optionInfo["description"]);
                     $this->getMultipleResponseCatalog()->create($option);
                 }
             }
             $this->getQuestionCatalog()->commit();
             $this->setFlash('ok', $this->i18n->_("The question was saved"));
         } catch (Exception $e) {
             $this->getQuestionCatalog()->rollBack();
             $this->setFlash('error', $this->i18n->_($e->getMessage()));
         }
     }
     $this->_redirect('question/list');
 }
コード例 #2
0
ファイル: PollController.php プロジェクト: Eximagen/sochi
 public function editquestionAction()
 {
     if ($this->getRequest()->isPost()) {
         $params = $this->getRequest()->getParams();
         //die("<pre>".print_r($params, true)."</pre>");
         $question = QuestionQuery::create()->findByPKOrThrow($params["id_question"], $this->i18n->_("The Question with id {$id} does not exist"));
         try {
             $this->getQuestionCatalog()->beginTransaction();
             QuestionFactory::populate($question, $params);
             if ($params["matrix"]) {
                 $question->setMatrix(Question::$Matrix["IsMatrix"]);
             } else {
                 $question->setMatrix(Question::$Matrix["NotMatrix"]);
             }
             $this->getQuestionCatalog()->update($question);
             if ($question->isMatrix()) {
                 foreach ($params["row"] as $row) {
                     if ($row["status"] == "change") {
                         $existRow = QuestionMatrixResponseQuery::create()->findByPKOrThrow($row["id_matrix_response"], $this->i18n->_("The Matrix Row with id {$row["id_matrix_response"]} does not exit"));
                         $existRow->setDescription($row["description"]);
                         $this->getMatrixResponseCatalog()->update($existRow);
                     } else {
                         if ($row["status"] == "add") {
                             $newRow = new QuestionMatrixResponse();
                             $newRow->setDescription($row["description"]);
                             $newRow->setIdQuestion($question->getIdQuestion());
                             $newRow->setHeaderType(QuestionMatrixResponse::$HeaderType["Row"]);
                             $this->getMatrixResponseCatalog()->create($newRow);
                         } else {
                             if ($row["status"] == "delete") {
                                 $existRow = QuestionMatrixResponseQuery::create()->findByPKOrThrow($row["id_matrix_response"], $this->i18n->_("The Matrix Row with id {$row["id_matrix_response"]} does not exit"));
                                 $this->getMatrixResponseCatalog()->deleteById($existRow->getIdMatrixResponse());
                             }
                         }
                     }
                 }
                 foreach ($params["col"] as $col) {
                     if ($col["status"] == "change") {
                         $existCol = QuestionMatrixResponseQuery::create()->findByPKOrThrow($col["id_matrix_response"], $this->i18n->_("The Matrix Col with id {$col["id_matrix_response"]} does not exit"));
                         $existCol->setDescription($col["description"]);
                         $this->getMatrixResponseCatalog()->update($existCol);
                     } else {
                         if ($col["status"] == "add") {
                             $newCol = new QuestionMatrixResponse();
                             $newCol->setDescription($col["description"]);
                             $newCol->setIdQuestion($question->getIdQuestion());
                             $newCol->setHeaderType(QuestionMatrixResponse::$HeaderType["Col"]);
                             $this->getMatrixResponseCatalog()->create($newCol);
                         } else {
                             if ($col["status"] == "delete") {
                                 $existCol = QuestionMatrixResponseQuery::create()->findByPKOrThrow($col["id_matrix_response"], $this->i18n->_("The Matrix Col with id {$col["id_matrix_response"]} does not exit"));
                                 $this->getMatrixResponseCatalog()->deleteById($existCol->getIdMatrixResponse());
                             }
                         }
                     }
                 }
             } else {
                 $matrix = QuestionMatrixResponseQuery::create()->whereAdd(QuestionMatrixResponse::ID_QUESTION, $question->getIdQuestion(), BaseQuery::EQUAL)->find();
                 while ($header = $matrix->read()) {
                     $this->getMatrixResponseCatalog()->deleteById($header->getIdMatrixResponse());
                 }
             }
             if ($question->getIdType() == Question::$Type["Multiple"]) {
                 foreach ($params["option"] as $option) {
                     if ($option["status"] == "change") {
                         $existOption = QuestionMultipleResponseQuery::create()->findByPKOrThrow($option["id_response"], $this->i18n->_("The Option with id {$option["id_response"]} does not exit"));
                         $existOption->setDescription($option["description"]);
                         $this->getMultipleResponseCatalog()->update($existOption);
                     } else {
                         if ($option["status"] == "add") {
                             $newOption = new QuestionMultipleResponse();
                             $newOption->setIdQuestion($question->getIdQuestion());
                             $newOption->setDescription($option["description"]);
                             $this->getMultipleResponseCatalog()->create($newOption);
                         } else {
                             if ($option["status"] == "delete") {
                                 $existOption = QuestionMultipleResponseQuery::create()->findByPKOrThrow($option["id_response"], $this->i18n->_("The Option with id {$option["id_response"]} does not exit"));
                                 $this->getMultipleResponseCatalog()->deleteById($existOption->getIdResponse());
                             }
                         }
                     }
                 }
             } else {
                 $options = QuestionMultipleResponseQuery::create()->whereAdd(QuestionMultipleResponse::ID_QUESTION, $question->getIdQuestion(), BaseQuery::EQUAL)->find();
                 while ($option = $options->read()) {
                     $this->getMultipleResponseCatalog()->deleteById($option->getIdResponse());
                 }
             }
             $this->getQuestionCatalog()->commit();
             $this->setFlash('ok', $this->i18n->_("The question was uptated"));
         } catch (Exception $e) {
             $this->getPollCatalog()->rollBack();
             $this->setFlash('error', $this->i18n->_($e->getMessage()));
         }
         $this->_redirect("poll/makequestionary/type/make/id/" . $params["id_poll"]);
     }
 }
コード例 #3
0
 /**
  * Metodo para actualizar varios QuestionMatrixResponses de tipo Coll en la base de datos
  * @param array $headers array de objetos QuestionMatrixResponse
  * @param array $updateHeaders array compuesto por id y nueva descripción
  */
 public function updateCols($headers, $updateHeaders, $idQuestion)
 {
     try {
         foreach ($updateHeaders as $updateHeader) {
             if ($updateHeader["id_matrix_response"] > 0) {
                 QuestionMatrixResponseFactory::populate($headers[$updateHeader["id_matrix_response"]], $updateHeader);
                 $this->update($headers[$updateHeader["id_matrix_response"]]);
                 unset($headers[$updateHeader["id_matrix_response"]]);
             } else {
                 $header = new QuestionMatrixResponse();
                 $header->setDescription($updateHeader["description"])->setHeaderType(QuestionMatrixResponse::$HeaderType["Col"])->setIdQuestion($idQuestion);
                 $this->create($header);
             }
         }
         foreach ($headers as $header) {
             $header->setStatus(QuestionMatrixResponse::$Status["Inactive"]);
             $this->update($header);
         }
     } catch (Exception $e) {
         $this->throwException("The QuestionMatrixResponses can't be saved \n", $e);
     }
 }