src/Service/App/Merchant/EventListener/UserActivityListener.php line 39

Open in your IDE?
  1. <?php
  2. namespace App\Service\App\Merchant\EventListener;
  3. use App\Core\Security\Authenticator\Contract\IMerchantUser;
  4. use App\Core\Security\Contract\ISecurityHelper;
  5. use App\Repository\Merchant\Contract\IUserRepository;
  6. use Doctrine\ORM\Exception\ORMException;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. class UserActivityListener
  9. {
  10.     /**
  11.      * @var ISecurityHelper
  12.      */
  13.     private ISecurityHelper $security;
  14.     /**
  15.      * @var IUserRepository
  16.      */
  17.     private IUserRepository $repository;
  18.     /**
  19.      * UserActivityListener constructor.
  20.      *
  21.      * @param ISecurityHelper $security
  22.      * @param IUserRepository $repository
  23.      */
  24.     public function __construct(ISecurityHelper $securityIUserRepository $repository)
  25.     {
  26.         $this->security $security;
  27.         $this->repository $repository;
  28.     }
  29.     /**
  30.      * @param RequestEvent $event
  31.      */
  32.     public function onRequest(RequestEvent $event): void
  33.     {
  34.         $user $this->security->getUser();
  35.         if ($user instanceof IMerchantUser) {
  36.             if ($user->updateLastAccessTime()) {
  37.                 try {
  38.                     $this->repository->save($user);
  39.                 } catch (ORMException) {
  40.                     // it could be deadlock issue, just skip it, because it is not important
  41.                 }
  42.             }
  43.         }
  44.     }
  45. }