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); } }
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; }
public function deleteAllAlternativeByQuestionId($QuestionId) { /* Deletar : * 'AlternativeHistory', * 'Answer', * 'AnswerHistory' */ $whereDeleteAlternative = array('QuestionId = ?' => $QuestionId); DbTable_Alternative::getInstance()->delete($whereDeleteAlternative); return array('status' => true); }