MailerHandler.php 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Message\Handler;
  4. use App\Entity\Message\Email;
  5. use App\Message\Message\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. public function __invoke(MailerCommand $mailerCommand): void
  20. {
  21. $mailerModel = $mailerCommand->getMailerModel();
  22. $emails = $this->mailer->main($mailerModel);
  23. if ($mailerModel->getNotify()) {
  24. /** @var Email */
  25. $email = $emails->first()->getEmailEntity();
  26. $this->notifier->notifyMessage(
  27. $this->accessRepository->find($mailerCommand->getMailerModel()->getSenderId()),
  28. ['about' => $email->getAbout()]
  29. );
  30. }
  31. }
  32. }