/** * @param Notification $notification * @return void */ public function notify(Notification $notification) { if (!$this->container->isScopeActive('request')) { $this->container->enterScope('request'); $this->container->set('request', new Request(), 'request'); } $ticket = $this->loadTicket($notification); $changeList = $this->postProcessChangesList($notification); foreach ($this->watchersService->getWatchers($ticket) as $watcher) { $userType = $watcher->getUserType(); $user = User::fromString($userType); $isOroUser = $user->isOroUser(); if ($isOroUser) { $loadedUser = $this->oroUserManager->findUserBy(['id' => $user->getId()]); } else { $loadedUser = $this->diamanteUserRepository->get($user->getId()); } if (!$isOroUser && $notification->isTagUpdated()) { continue; } $message = $this->message($notification, $ticket, $isOroUser, $loadedUser->getEmail(), $changeList); $this->mailer->send($message); $reference = new MessageReference($message->getId(), $ticket, $this->configManager->get(self::EMAIL_NOTIFIER_CONFIG_PATH)); $this->messageReferenceRepository->store($reference); } }
/** * Create Message Reference * * @param $messageId * @param Ticket $ticket * @param $endpoint */ private function createMessageReference($messageId, $ticket, $endpoint) { $messageReference = new MessageReference($messageId, $ticket, $endpoint); $this->messageReferenceRepository->store($messageReference); }