Exemplo n.º 1
0
 /**
  * 
  */
 public function alternative($alternative_id, Model_Alternative $modelAlternative)
 {
     $nameCache = 'alternative_' . $alternative_id;
     $alternative = $this->cache->load($nameCache);
     $origem = "--->alternative vem do cache---";
     //recupera do cache
     if ($alternative == false) {
         $alternative = $modelAlternative->getAlternativeById($alternative_id);
         $this->cache->save($alternative, $nameCache);
         $origem = "--->alternative NAO vem do cache---";
     }
     return $alternative;
 }
Exemplo n.º 2
0
 public function updateQuestionTransaction($questionRow, $questionRowData)
 {
     $QuestionTip = new Model_QuestionTip();
     $Alternative = new Model_Alternative();
     DbTable_Question::getInstance()->getAdapter()->beginTransaction();
     try {
         $updateQuestion = $this->updateQuestion($questionRow, $questionRowData);
         if (!$updateQuestion['status']) {
             throw new Vtx_UserException($updateQuestion['messageError']);
         }
         $questionId = $questionRow->getId();
         $questionIsAnswered = $this->dbTable_Question->isAnswered($questionId);
         // Logica da "Ajuda da Questão"
         $QuestionTip->deleteAllByQuestionId($questionId);
         if (isset($questionRowData['helper'])) {
             $helpersData = $questionRowData['helper'];
             $insertHelper = $QuestionTip->createQuestionTipsByQuestion($helpersData, $questionId);
             if (!$insertHelper['status']) {
                 throw new Vtx_UserException($insertHelper['messageError']);
             }
         }
         // Logica das "Alternativas"
         if ($questionIsAnswered) {
             if ($questionRow->getQuestionTypeId() != $questionRowData['question_type_id']) {
                 $errorQuestionType['messageError'] = 'Não é possível alterar o tipo da questão, pois há respostas.';
                 throw new Vtx_UserException($errorQuestionType['messageError']);
             }
         }
         if (isset($questionRowData['alternative'])) {
             $updateAlternative = $Alternative->updateAlternativesByQuestion($questionRowData['alternative'], $questionId);
             if (!$updateAlternative['status']) {
                 throw new Vtx_UserException($updateAlternative['messageError']);
             }
         }
         DbTable_Question::getInstance()->getAdapter()->commit();
         return array('status' => true);
     } 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);
     }
 }