src/FlexApp/EventSubscriber/RetieChatMessagesOnPortalSubscriber.php line 53

Open in your IDE?
  1. <?php
  2. namespace FlexApp\EventSubscriber;
  3. use FlexApp\Entity\ChatB;
  4. use FlexApp\Enum\LoggerJobNameEnum;
  5. use FlexApp\Events\Style43\RegistrationSuccessEvent;
  6. use FlexApp\Events\UserEvent;
  7. use FlexApp\Exceptions\PortalApiClientException;
  8. use FlexApp\Repository\ChatBRepository;
  9. use FlexApp\Service\LogsManager;
  10. use Psr\Log\LoggerInterface;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use WebBundle\Helper\PortalHelper;
  13. class RetieChatMessagesOnPortalSubscriber implements EventSubscriberInterface
  14. {
  15.     private PortalHelper $portalHelper;
  16.     private LoggerInterface $logger;
  17.     private ChatBRepository $chatBRepository;
  18.     private LogsManager $logsManager;
  19.     /**
  20.      * RetieChatMessagesOnPortalSubscriber constructor.
  21.      *
  22.      * @param PortalHelper $portalHelper
  23.      * @param LoggerInterface $logger
  24.      * @param ChatBRepository $chatBRepository
  25.      */
  26.     public function __construct(
  27.         PortalHelper $portalHelper,
  28.         LoggerInterface $logger,
  29.         ChatBRepository $chatBRepository,
  30.         LogsManager $logsManager
  31.     ) {
  32.         $this->portalHelper $portalHelper;
  33.         $this->logger $logger;
  34.         $this->chatBRepository $chatBRepository;
  35.         $this->logsManager $logsManager;
  36.     }
  37.     public static function getSubscribedEvents(): array
  38.     {
  39.         return [
  40.             RegistrationSuccessEvent::class => [
  41.                 ['retieChatMessagesOnPortal'0],
  42.             ],
  43.         ];
  44.     }
  45.     public function retieChatMessagesOnPortal(UserEvent $userEvent)
  46.     {
  47.         $user $userEvent->getUser();
  48.         $token $user->getToken();
  49.         /** @var ChatB $chat */
  50.         $chat $this->chatBRepository->findOneBy(['token' => $token]);
  51.         if (!$chat) {
  52.             return;
  53.         }
  54.         if (=== sizeof($chat->getMessages())) {
  55.             return;
  56.         }
  57.         try {
  58.             $this->portalHelper->retieChatMessagesOnPortal($token$usertrue);
  59.         } catch (PortalApiClientException $e) {
  60.             $this->logger->warning($e->getMessage());
  61.             $this->logsManager->logError(
  62.                 [
  63.                     'message' => $e->getMessage(),
  64.                 ],
  65.                 LoggerJobNameEnum::RETIE_CHAT_MESSAGE_LOG
  66.             );
  67.         }
  68.     }
  69. }