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; }
/** * * 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; }