src/FlexApp/EventSubscriber/RetieChatMessagesOnPortalSubscriber.php line 44

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