public function createAnswer($data, $alternativeRow) { DbTable_AnswerVerificador::getInstance()->getAdapter()->beginTransaction(); try { $qstnId = $data['qstn_id']; $aaresult_value = $data['aaresult_value']; $data = $this->_filterInputAnswer($data)->getUnescaped(); $data['aaresult_value'] = $aaresult_value; $answerRow = DbTable_AnswerVerificador::getInstance()->createRow()->setAlternativeId($data['alternative_id'])->setAnswerValue($data['answer_value'])->setStartTime($data['start_time'])->setEndTime($data['end_time'])->setAnswerDate($data['answer_date'])->setUserId($data['user_id'])->setEnterpriseId($data['enterprise_id']); //print_r($answerRow);exit //Zend_Debug::Dump($answerRow );exit; $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())); if ($alternativeRow->getAlternativeTypeId() == Model_AlternativeType::RESULT_ACTION) { $this->saveAnswerAnnualResult($answerRow, $data); } $Execution = new Model_Execution(); $Execution->initExecution($qstnId, $data['user_id']); 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); } }
public function setExecutionProgress($QstnId, $UserId) { $qtdTotal = DbTable_Questionnaire::getInstance()->getQuestionnaireTotalQuestions($QstnId)->getQtdTotal(); $qtdFaltante = count(DbTable_Questionnaire::getInstance()->needToFinish($QstnId, $UserId)->toArray()); $qtdRealizado = $qtdTotal - $qtdFaltante; $pctRealizado = round($qtdRealizado / $qtdTotal * 100, 0); $executionRow = DbTable_Execution::getInstance()->fetchRow(array('UserId = ?' => $UserId, 'QuestionnaireId = ?' => $QstnId)); if (!$executionRow) { $Execution = new Model_Execution(); $executionRow = $Execution->initExecution($QstnId, $UserId); } $executionRow->setProgress($pctRealizado); $executionRow->save(); return true; }