/**
  * Add redmine key
  *
  * @param number $id ID
  *
  * @return mixed
  */
 protected function _addRedmineKey($id = null)
 {
     if ($id) {
         $this->_userKey->setId($id);
     }
     $this->_userKey->setKey($this->_redmineKeyValue)->save();
     return $this->_userKey->getCollection()->getLastInsertedValue();
 }
 /**
  * Handle user issues
  *
  * @return void
  */
 public function handleUserIssues()
 {
     $user = $this->getUserData();
     if (!$user) {
         return;
     }
     $key = $this->_userKey->setId($user[Chat::COLUMN_REDMINE_KEY_ID])->load();
     $redmineIssues = $this->_getRedmineIssues($key[UserKey::COLUMN_KEY]);
     $redmineIssueNumbers = $this->_issueHelper->getIssueNumbers($redmineIssues);
     $currentIssueNumbers = $this->_getIssueNumbers($this->_getCurrentIssues());
     $newIssueNumbers = $this->_getNewIssueNumbers($redmineIssueNumbers, $currentIssueNumbers);
     if (!$newIssueNumbers) {
         return;
     }
     $keyId = $key[$this->_userKey->getPrimaryKey()];
     $this->_deleteIssuesByKey($keyId);
     $this->_saveIssues($keyId, $redmineIssueNumbers);
     $newIssuesData = $this->_getIssuesDataByNumbers($newIssueNumbers, $redmineIssues);
     foreach ($newIssuesData as $newIssue) {
         $this->_botApi->sendMessage($user[Chat::COLUMN_CHAT_ID], $this->_getMessageForNewIssue($newIssue));
     }
 }
 /**
  * Delete Redmine user issues
  *
  * @param number $keyId Redmine key ID
  *
  * @return void
  */
 protected function _deleteRedmineUserIssues($keyId)
 {
     $this->_userIssue->setKeyId($keyId)->deleteByKey();
 }