/** * Hook performing actual save * * @param string $newCode * @param int $userId * @return $changed */ public function setReceptionCode($newCode, $userId) { $oldCode = $this->respondent->getReceptionCode(); $code = $this->respondent->setReceptionCode($newCode); // Is the respondent really removed if ($code->isSuccess()) { $this->addMessage($this->_('Respondent restored.')); if ($this->formData['restore_tracks']) { $count = $this->respondent->restoreTracks($oldCode, $code); $this->addMessage(sprintf($this->plural('Restored %d track.', 'Restored %d tracks.', $count), $count)); } } else { // Perform actual save, but not simple stop codes. if ($code->isForRespondents()) { $this->addMessage($this->_('Respondent deleted.')); $this->afterSaveRouteKeys = false; $this->resetRoute = true; $this->routeAction = 'index'; } else { // Just a stop code $this->addMessage(sprintf($this->plural('Stopped %d track.', 'Stopped %d tracks.', $count), $count)); } } return 1; }
/** * Hook performing actual save * * @param string $newCode * @param int $userId * @return $changed */ public function setReceptionCode($newCode, $userId) { $model = $this->getModel(); $oldCode = $this->respondent->getReceptionCode()->getCode(); $code = $model->setReceptionCode($this->formData['gr2o_patient_nr'], $this->formData['gr2o_id_organization'], $newCode, $userId, $oldCode); // Is the respondent really removed if ($code->isSuccess()) { $this->addMessage($this->_('Respondent restored.')); if ($this->formData['restore_tracks']) { $count = 0; $respTracks = $this->loader->getTracker()->getRespondentTracks($this->formData['grs_id_user'], $this->formData['gr2o_id_organization']); foreach ($respTracks as $respTrack) { if ($respTrack instanceof \Gems_Tracker_RespondentTrack) { if ($oldCode == $respTrack->getReceptionCode()->getCode()) { $respTrack->setReceptionCode($code, null, $userId); $count++; } } } $this->addMessage(sprintf($this->plural('Restored %d track.', 'Restored %d tracks.', $count), $count)); } } else { // Perform actual save, but not simple stop codes. if ($code->isForRespondents()) { $this->addMessage($this->_('Respondent deleted.')); $this->afterSaveRouteKeys = false; $this->resetRoute = true; $this->routeAction = 'index'; } else { // Just a stop code $this->addMessage(sprintf($this->plural('Stopped %d track.', 'Stopped %d tracks.', $count), $count)); } } return 1; }