예제 #1
0
 public function createQuestionTransaction($questionData)
 {
     $QuestionTip = new Model_QuestionTip();
     $Alternative = new Model_Alternative();
     DbTable_Question::getInstance()->getAdapter()->beginTransaction();
     try {
         $questionParentId = isset($questionData['parent_question_id']) ? $questionData['parent_question_id'] : null;
         $insert = $this->createQuestion($questionData, $questionParentId);
         if (!$insert['status']) {
             throw new Vtx_UserException($insert['messageError']);
         }
         if (isset($questionData['helper'])) {
             $helpersData = $questionData['helper'];
             $insertHelper = $QuestionTip->createQuestionTipsByQuestion($helpersData, $insert['lastInsertId']);
             if (!$insertHelper['status']) {
                 throw new Vtx_UserException($insertHelper['messageError']);
             }
         }
         $alternativeRowData = $questionData['alternative'];
         if (isset($alternativeRowData)) {
             $insertAlternative = $Alternative->createAlternativesByQuestion($alternativeRowData, $insert['lastInsertId']);
             if (!$insertAlternative['status']) {
                 throw new Vtx_UserException($insertAlternative['messageError']);
             }
         }
         DbTable_Question::getInstance()->getAdapter()->commit();
         return array('status' => true, 'lastInsertId' => $insert['lastInsertId'], 'lastDesignation' => $insert['lastDesignation']);
     } catch (Vtx_UserException $e) {
         DbTable_Question::getInstance()->getAdapter()->rollBack();
         return array('status' => false, 'messageError' => $e->getMessage());
     } catch (Exception $e) {
         DbTable_Question::getInstance()->getAdapter()->rollBack();
         throw new Exception($e);
     }
 }