/** * @param Message $message * @param Ticket $ticket */ private function processWatchers(Message $message, $ticket) { if (!$ticket) { return; } /** @var Message\MessageRecipient $recipient */ foreach ($message->getRecipients() as $recipient) { $email = $recipient->getEmail(); if ($email == $this->configManager->get(self::EMAIL_NOTIFIER_CONFIG_PATH)) { continue; } $diamanteUser = $this->diamanteUserRepository->findUserByEmail($email); $oroUser = $this->oroUserManager->findUserByEmail($email); if ($oroUser) { $user = new User($oroUser->getId(), User::TYPE_ORO); } elseif ($diamanteUser) { $user = new User($diamanteUser->getId(), User::TYPE_DIAMANTE); } else { $diamanteUser = $this->diamanteUserFactory->create($email, $recipient->getFirstName(), $recipient->getLastName()); $this->diamanteUserRepository->store($diamanteUser); $user = new User($diamanteUser->getId(), User::TYPE_DIAMANTE); } $this->watchersService->addWatcher($ticket, $user); } }
/** * @param Message $message * @param Ticket $ticket */ private function processWatchers(Message $message, $ticket) { if (!$ticket) { return; } /** @var Message\MessageRecipient $recipient */ foreach ($message->getRecipients() as $recipient) { $email = $recipient->getEmail(); if ($email == $this->configManager->get(self::EMAIL_NOTIFIER_CONFIG_PATH)) { continue; } $user = $this->diamanteUserService->getUserByEmail($email); if (is_null($user)) { $user = $this->diamanteUserService->createDiamanteUser($this->prepareCreateUserCommand($message)); } $this->watchersService->addWatcher($ticket, $user); } }
/** * Add Watcher to Ticket * * @ApiDoc( * description="Add watcher to ticket by email address", * uri="/tickets/{id}/watchers.{_format}", * method="POST", * resource=true, * requirements={ * { * "name"="id", * "dataType"="integer", * "requirement"="\d+", * "description"="Ticket Id" * } * }, * statusCodes={ * 201="Returned when successful", * 403="Returned when the user is not authorized", * 404="Returned when the ticket not found" * } * ) * * @param Command\AddWatcherByEmailCommand $command * @return null */ public function addWatcherByEmail(Command\AddWatcherByEmailCommand $command) { $ticket = $this->getTicket($command); $oroUser = $this->userManager->findUserByEmail($command->email); $diamanteUser = $this->diamanteUserRepository->findUserByEmail($command->email); // TODO: same login present in notification should be moved to one place if ($oroUser) { $user = new User($oroUser->getId(), User::TYPE_ORO); } elseif ($diamanteUser) { $user = new User($diamanteUser->getId(), User::TYPE_DIAMANTE); } else { $recipient = new MessageRecipient($command->email, null); $diamanteUser = $this->diamanteUserFactory->create($command->email, $recipient->getFirstName(), $recipient->getLastName()); $this->diamanteUserRepository->store($diamanteUser); $user = new User($diamanteUser->getId(), User::TYPE_DIAMANTE); } parent::addWatcher($ticket, $user); return $this->userService->fetchUserDetails($user); }