src/Component/Organization/EventListener/ManageUserListener.php line 32

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitBag\OpenMarketplace\Component\Organization\EventListener;
  4. use BitBag\OpenMarketplace\Component\Organization\Email\OrganizationEmailManagerInterface;
  5. use BitBag\OpenMarketplace\Component\Vendor\Entity\ShopUserInterface;
  6. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  7. final class ManageUserListener
  8. {
  9.     private ?ShopUserInterface $originalUser null;
  10.     public function __construct(
  11.         private OrganizationEmailManagerInterface $emailManager,
  12.     ) {
  13.     }
  14.     public function setOriginalState(ResourceControllerEvent $event): void
  15.     {
  16.         $user $event->getSubject();
  17.         if (!$user instanceof ShopUserInterface) {
  18.             return;
  19.         }
  20.         if (null === $this->originalUser) {
  21.             $this->originalUser = clone $user;
  22.         }
  23.     }
  24.     public function checkForChanges(ResourceControllerEvent $event): void
  25.     {
  26.         $user $event->getSubject();
  27.         if (!$user instanceof ShopUserInterface || !$this->originalUser instanceof ShopUserInterface) {
  28.             return;
  29.         }
  30.         if (false === $user->isEnabled() && true === $this->originalUser->isEnabled()) {
  31.             $this->emailManager->sendUserAccountSuspendedEmail($user);
  32.         }
  33.         if ($user->getRoles() !== $this->originalUser->getRoles()) {
  34.             $this->emailManager->sendUserRoleChangedEmail($user);
  35.         }
  36.     }
  37. }