Esempio n. 1
0
 public function deleteQuestion($questionRow)
 {
     DbTable_Question::getInstance()->getAdapter()->beginTransaction();
     try {
         // verifica se ha respostas para a questao
         $objIsAnswered = $this->dbTable_Question->isAnswered($questionRow->getId());
         if ($objIsAnswered) {
             return array('status' => false, 'messageError' => 'Há respostas para esta questão.');
         }
         // verifica se ha alternativas
         /*
         $query = DbTable_Alternative::getInstance()->select()
             ->from(
                 array('a' => 'Alternative'),
                 array('Question' => 'a.QuestionId')
             )
             ->where('a.QuestionId = ?', $questionRow->getId());
         $objResultAlternative = DbTable_Alternative::getInstance()->fetchRow($query);
         
         if ($objResultAlternative) {
             return array(
                 'status' => false,
                 'messageError' => 'Há alternativas nesta questão.'
             );
         }
         */
         /* Deleta todos os resultados anuais da questão */
         $whereDeleteAnnualResult = array('QuestionId = ?' => $questionRow->getId());
         DbTable_AnnualResult::getInstance()->delete($whereDeleteAnnualResult);
         /* Deleta todos as alternativas da questão */
         $whereDeleteAlternative = array('QuestionId = ?' => $questionRow->getId());
         DbTable_Alternative::getInstance()->delete($whereDeleteAlternative);
         /* Deleta todos as ajudas da questão */
         $whereDeleteQuestionTip = array('QuestionId = ?' => $questionRow->getId());
         DbTable_QuestionTip::getInstance()->delete($whereDeleteQuestionTip);
         $criterionId = $questionRow->getCriterionId();
         $questionRow->delete();
         DbTable_Question::getInstance()->getAdapter()->commit();
         DbTable_Question::getInstance()->reorder($criterionId);
         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);
     }
 }
Esempio n. 2
0
 public function hasChange($answerId, $newAnswer, $alternativeRow)
 {
     DbTable_Alternative::getInstance();
     $oldAnswerRow = $this->getAnswerById($answerId);
     $arrNewAnswer['alternative_id'] = $newAnswer['alternative_id'];
     $arrNewAnswer['answer_value'] = $newAnswer['answer_value'];
     $arrOldAnswer = array();
     if ($oldAnswerRow != null) {
         $arrOldAnswer['alternative_id'] = $oldAnswerRow->getAlternativeId();
         $arrOldAnswer['answer_value'] = $oldAnswerRow->getAnswerValue();
     } else {
         $arrOldAnswer = $arrNewAnswer;
     }
     if ($alternativeRow->getAlternativeTypeId() == Model_AlternativeType::RESULT_ACTION && $newAnswer['alternative_id'] == $arrOldAnswer['alternative_id']) {
         if ($this->hasChangeAnswerAnnualResult($answerId, $newAnswer, $alternativeRow)) {
             return true;
         }
     }
     return $arrNewAnswer == $arrOldAnswer ? false : true;
 }
Esempio n. 3
0
 /**
  * 
  * retorna objeto com dados das respostas da QuestaoId
  * 
  * @param type $QuestionId
  * @param type $toArrayWithAnnualResult -- OFF
  * @param type $modeEditShowAllQuestions
  * @return type
  */
 public function getAllByQuestionId($QuestionId, $modeEditShowAllQuestions = false, $returnType = 'array')
 {
     $tbAlternative = new DbTable_Alternative();
     $questionType = DbTable_Question::getInstance()->fetchRow(array('Id = ?' => $QuestionId))->getQuestionTypeId();
     if (!$modeEditShowAllQuestions and $questionType == Model_QuestionType::YESNO_ID) {
         $where = array('QuestionId = ?' => $QuestionId, 'Designation <= 3');
     } elseif (!$modeEditShowAllQuestions and $questionType == Model_QuestionType::ABCD_ID) {
         $where = array('QuestionId = ?' => $QuestionId, 'Designation <= 4');
     } elseif (!$modeEditShowAllQuestions and $questionType == Model_QuestionType::ALWAYS_ID) {
         $where = array('QuestionId = ?' => $QuestionId, 'Designation <= 3');
     } else {
         $where = array('QuestionId = ?' => $QuestionId);
     }
     if ($returnType == 'array') {
         return $tbAlternative->fetchAll($where)->toArray();
     }
     return $tbAlternative->fetchAll($where);
     /*
     if ($toArrayWithAnnualResult) {
         $AnnualResult = new Model_AnnualResult();
         $AnnualResultData = new Model_AnnualResultData();
         $getAllAlternative = $objResultAlternative->toArray();
         $getAllAnnualResult = $AnnualResult->getAllByQuestionId($QuestionId)->toArray();
         $countGetAlternative = count($getAllAlternative);
         $countAllAnnualResult = count($getAllAnnualResult);
         for ($l = 0; $l < $countGetAlternative; $l++) {
             for ($c = 0; $c < $countAllAnnualResult; $c++) {
                 if ($getAllAlternative[$l]['Id'] == $getAllAnnualResult[$c]['AlternativeId']) {
                     $getAllAlternative[$l]['AnnualResult'] = $getAllAnnualResult[$c];
                     $getAllAlternative[$l]['AnnualResult']['AnnualResultData'] = 
                         $AnnualResultData
                             ->getAllAnnualResultDataByAlternativeId($getAllAlternative[$l]['Id'])
                             ->toArray();
                 }                
             }
         }
         return $getAllAlternative;
     }
     */
     //return $objResultAlternative;
 }