src/EventSubscriber/Game/MailSubscriber.php line 36

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventSubscriber\Game;
  4. use App\Event\MailEvent;
  5. use App\Model\DiscordTriggerService;
  6. use App\Model\Game\GameUserService;
  7. use App\Model\GameService;
  8. use App\Model\UserService;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class MailSubscriber implements EventSubscriberInterface
  11. {
  12.     public const MAIL_SENT 'mail.sent';
  13.     /**
  14.      * @var UserService
  15.      */
  16.     private $userService;
  17.     /**
  18.      * @var DiscordTriggerService
  19.      */
  20.     private $triggerService;
  21.     /**
  22.      * @var GameService
  23.      */
  24.     private $gameService;
  25.     public function __construct(GameUserService $userServiceDiscordTriggerService $triggerServiceGameService $gameService)
  26.     {
  27.         $this->userService $userService;
  28.         $this->triggerService $triggerService;
  29.         $this->gameService $gameService;
  30.     }
  31.     public function discordNotify(MailEvent $event)
  32.     {
  33.         $this->gameService->setArea($event->getArea());
  34.         // Discord notification
  35.         $mail $event->getMail();
  36.         $town $this->gameService->townService->getTownByName($mail->getTo());
  37.         if ($town) {
  38.             $this->userService->setAreaContext($this->gameService->area());
  39.             $user $this->userService->getUserFromUsername($town->loginname);
  40.             if ($user) {
  41.                 $discordUser $this->userService->getUserDiscord($user->getId());
  42.                 if ($discordUser && $discordUser->isVerified() && $discordUser->getSettings() != null && $discordUser->getSettings()->message) {
  43.                     $this->triggerService->addTrigger($event->getArea(), DiscordTriggerService::TRIGGER_USER_DM$user->getId(), "Your received an in-game mail from **{$mail->getFrom()}** with the subject **{$mail->getSubject()}**");
  44.                 }
  45.             }
  46.         }
  47.     }
  48.     /**
  49.      * {@inheritDoc}
  50.      * @codeCoverageIgnore
  51.      */
  52.     public static function getSubscribedEvents(): array
  53.     {
  54.         return [
  55.             self::MAIL_SENT => [
  56.                 ['discordNotify'0],
  57.             ]
  58.         ];
  59.     }
  60. }