watchListRepository->findOneBy(["token" => $message->watchListToken]); /** @var Domain $domain */ $domain = $this->domainRepository->findOneBy(["ldhName" => $message->ldhName]); /** @var DomainEvent $event */ foreach ($domain->getEvents()->filter(fn($event) => $message->updatedAt < $event->getDate()) as $event) { $watchListTriggers = $watchList->getWatchListTriggers() ->filter(fn($trigger) => $trigger->getEvent() === $event->getAction()); /** @var WatchListTrigger $watchListTrigger */ foreach ($watchListTriggers->getIterator() as $watchListTrigger) { switch ($watchListTrigger->getAction()) { case TriggerAction::SendEmail: $this->sendEmailDomainUpdated($event, $watchList->getUser()); break; case TriggerAction::BuyDomain : if ($watchListTrigger->getConnector() === null) throw new Exception('Connector is missing'); $connector = $watchListTrigger->getConnector(); if ($connector->getProvider() === ConnectorProvider::OVH) { $ovh = new OVHConnector($connector->getAuthData()); $isDebug = $this->kernel->isDebug(); $ovh->orderDomain( $domain, true, true, true, $isDebug ); } else throw new Exception("Unknown provider"); } } } } /** * @throws TransportExceptionInterface */ private function sendEmailDomainUpdated(DomainEvent $domainEvent, User $user): void { $email = (new TemplatedEmail()) ->from($this->mailerSenderEmail) ->to($user->getEmail()) ->priority(Email::PRIORITY_HIGHEST) ->subject('A domain name has been changed') ->htmlTemplate('emails/domain_updated.html.twig') ->locale('en') ->context([ "event" => $domainEvent ]); $this->mailer->send($email); } }