public function updateAnswer($answerId, $data, $alternativeRow) { DbTable_AnswerVerificador::getInstance()->getAdapter()->beginTransaction(); try { $qstnId = $data['qstn_id']; $aaresult_value = $data['aaresult_value']; $answerRow = $this->getAnswerById($answerId); $alternativeIdOld = $answerRow->getAlternativeId(); $data = $this->_filterInputAnswer($data)->getUnescaped(); $data['aaresult_value'] = $aaresult_value; $answerRow->setAlternativeId($data['alternative_id'])->setAnswerValue($data['answer_value'])->setStartTime($data['start_time'])->setEndTime($data['end_time'])->setAnswerDate($data['answer_date']); $answerRow->save(); $AnswerHistory = new Model_AnswerHistoryVerificador(); $AnswerHistory->createAnswerHistory(array('user_id' => $data['logged_user_id'], 'answer_id' => $answerRow->getId(), 'alternative_id' => $answerRow->getAlternativeId(), 'answer_value' => $answerRow->getAnswerValue(), 'start_time' => $answerRow->getStartTime(), 'end_time' => $answerRow->getEndTime(), 'answer_date' => $answerRow->getAnswerDate(), 'enterprise_id' => $answerRow->getEnterpriseId())); $this->deleteOldAnswerAnnualResult($answerRow, $alternativeIdOld); if ($alternativeRow->getAlternativeTypeId() == Model_AlternativeType::RESULT_ACTION) { $this->saveAnswerAnnualResult($answerRow, $data, $alternativeIdOld); } $userLogged = Zend_Auth::getInstance()->getIdentity(); $permissionEvaluationOfResponse = $this->Acl->isAllowed($userLogged->getRole(), 'management:questionnaire', 'evaluation-of-response'); $Execution = new Model_Execution(); $Execution->cleanDevolutive($qstnId, $data['user_id'], $permissionEvaluationOfResponse); DbTable_AnswerVerificador::getInstance()->getAdapter()->commit(); return array('status' => true, 'row' => $answerRow); } catch (Vtx_UserException $e) { DbTable_AnswerVerificador::getInstance()->getAdapter()->rollBack(); return array('status' => false, 'messageError' => $e->getMessage()); } catch (Exception $e) { DbTable_AnswerVerificador::getInstance()->getAdapter()->rollBack(); throw new Exception($e); } }