src/Postroyka/AccountBundle/EventListener/AccountChangeEmailListener.php line 29

Open in your IDE?
  1. <?php
  2. namespace Postroyka\AccountBundle\EventListener;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Postroyka\AccountBundle\Provider\ExtendedUserProvider;
  5. use Postroyka\ApiBundle\RabbitMQ\B24\Producers\B24ExportUserProducer;
  6. use Submarine\ConfirmationBundle\Event\ConfirmEvent;
  7. use Submarine\UsersBundle\Service\UsersService;
  8. class AccountChangeEmailListener
  9. {
  10.     /**
  11.      * @param EntityManagerInterface $entityManager
  12.      * @param UsersService $usersService
  13.      * @param ExtendedUserProvider $extendedUserProvider
  14.      */
  15.     public function __construct(
  16.         private EntityManagerInterface $entityManager,
  17.         private UsersService $usersService,
  18.         private ExtendedUserProvider $extendedUserProvider,
  19.         private B24ExportUserProducer $b24ExportUserProducer
  20.     )
  21.     {}
  22.     /**
  23.      * @param ConfirmEvent $event
  24.      */
  25.     public function onAccountChangeEmail(ConfirmEvent $event)
  26.     {
  27.         if (!$event->getUserId()) {
  28.             return;
  29.         }
  30.         $user $this->usersService->getUser($event->getUserId());
  31.         if (!$user->getId()) {
  32.             return;
  33.         }
  34.         $data $event->getConfirmCode()->getData();
  35.         $checkUser $this->usersService->getUserByEmail($data['email']);
  36.         if ($checkUser->getId()) {
  37.             return;
  38.         }
  39.         $user->setEmail($data['email']);
  40.         $extendedUser $this->extendedUserProvider->getByUser($user);
  41.         $extendedUser->setUpdatedAt();
  42.         $this->entityManager->flush();
  43.         $this->b24ExportUserProducer->exportUser($extendedUser);
  44.     }