MailerHandler.php 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Message\Handler;
  4. use App\Entity\Message\Email;
  5. use App\Message\Command\MailerCommand;
  6. use App\Repository\Access\AccessRepository;
  7. use App\Service\Mailer\Mailer;
  8. use App\Service\Notifier;
  9. use Symfony\Component\Messenger\Attribute\AsMessageHandler;
  10. #[AsMessageHandler(priority: 1)]
  11. class MailerHandler
  12. {
  13. public function __construct(
  14. private Mailer $mailer,
  15. private Notifier $notifier,
  16. private AccessRepository $accessRepository
  17. )
  18. {
  19. }
  20. public function __invoke(MailerCommand $mailerCommand): void
  21. {
  22. $mailerModel = $mailerCommand->getMailerModel();
  23. $emails = $this->mailer->main($mailerModel);
  24. if ($mailerModel->getNotify()) {
  25. /** @var Email */
  26. $email = $emails->first()->getEmailEntity();
  27. $this->notifier->notifyMessage(
  28. $this->accessRepository->find($mailerCommand->getMailerModel()->getSenderId()),
  29. ['about' => $email->getAbout()]
  30. );
  31. }
  32. }
  33. }