/**
  * Gets search results, that includes found items and any additional information.
  *
  * @param string $query
  * @param int $page
  * @param int $perPage
  * @param bool $searchById
  * @return array
  * @TODO: Refactor
  */
 public function search($query, $page, $perPage, $searchById = false)
 {
     $items = array();
     if ($searchById) {
         $idParts = explode(User::DELIMITER, $query);
         if (count($idParts) === 2) {
             $query = $idParts[1];
             if ($idParts[0] == User::TYPE_DIAMANTE) {
                 $isDiamanteUserSearch = true;
             }
         }
     }
     if ($searchById && isset($isDiamanteUserSearch)) {
         $diamanteUsers = [$this->diamanteUserRepository->get($query)];
     } else {
         $diamanteUsers = $this->diamanteUserRepository->searchByInput($query, $this->properties);
     }
     if (!isset($isDiamanteUserSearch)) {
         $oroUsers = $this->oroUserSearchHandler->search($query, $page, $perPage, $searchById);
     }
     if (!empty($diamanteUsers)) {
         $convertedDiamanteUsers = $this->convertUsers($diamanteUsers, User::TYPE_DIAMANTE);
         $items = array_merge($items, $convertedDiamanteUsers);
     }
     if (!empty($oroUsers['results'])) {
         $convertedOroUsers = $this->convertUsers($oroUsers['results'], User::TYPE_ORO);
         $items = array_merge($items, $convertedOroUsers);
     }
     return array('results' => $items, 'more' => false);
 }
 /**
  * @param $id
  */
 public function removeDiamanteUser($id)
 {
     /** @var DiamanteUser $user */
     $user = $this->diamanteUserRepository->get($id);
     $user->setDeleted(true);
     $user->getApiUser()->deactivate();
     $this->diamanteApiUserRepository->store($user->getApiUser());
     $this->diamanteUserRepository->store($user);
 }
 /**
  * @param $id
  */
 public function removeDiamanteUser($id)
 {
     /** @var DiamanteUser $user */
     $user = $this->diamanteUserRepository->get($id);
     $user->setDeleted(true);
     if ($user->getApiUser()) {
         $user->getApiUser()->deactivate();
         $this->diamanteApiUserRepository->store($user->getApiUser());
     }
     $this->diamanteUserRepository->store($user);
     $this->watcherListRepository->removeByUser(new User($user->getId(), User::TYPE_DIAMANTE));
 }
 /**
  * @param Notification $notification
  * @param Ticket $ticket
  *
  * @return string
  */
 private function getFormattedUserName(Notification $notification, Ticket $ticket)
 {
     $author = $notification->getAuthor();
     if (is_null($author)) {
         $reporterId = $ticket->getReporter()->getId();
         $user = $this->diamanteUserRepository->get($reporterId);
     } else {
         $user = $this->getUserDependingOnType($author);
     }
     $name = $this->nameFormatter->format($user);
     if (empty($name)) {
         $format = $this->nameFormatter->getNameFormat();
         $name = str_replace(array('%first_name%', '%last_name%', '%prefix%', '%middle_name%', '%suffix%'), array($user->getFirstName(), $user->getLastName(), '', '', ''), $format);
     }
     $name = preg_replace('/\\s+/', ' ', $name);
     return trim($name);
 }