src/Aqarmap/Bundle/UserBundle/EventListener/UserPackageSubscriber.php line 31

Open in your IDE?
  1. <?php
  2. namespace Aqarmap\Bundle\UserBundle\EventListener;
  3. use Aqarmap\Bundle\CreditBundle\Constant\PackageUserType;
  4. use Aqarmap\Bundle\UserBundle\Constant\UserTypes;
  5. use Aqarmap\Bundle\UserBundle\Event\UserPackageEvent;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class UserPackageSubscriber implements EventSubscriberInterface
  9. {
  10.     private EntityManagerInterface $entityManager;
  11.     public function __construct(EntityManagerInterface $entityManager)
  12.     {
  13.         $this->entityManager $entityManager;
  14.     }
  15.     public static function getSubscribedEvents(): array
  16.     {
  17.         return [
  18.             UserPackageEvent::CREATED_EVENT => 'updateUserTypeOnUserPackageCreation',
  19.         ];
  20.     }
  21.     /**
  22.      * Update User Type based on the purchased package.
  23.      * This supposes to be useless, as private owner can't buy companies' packages and vice versa. But, it happens.
  24.      */
  25.     public function updateUserTypeOnUserPackageCreation(UserPackageEvent $event): void
  26.     {
  27.         $userPackage $event->getUserPackage();
  28.         $user $userPackage->getUser();
  29.         if (PackageUserType::INDIVIDUAL == $userPackage->getPackage()->getUserType()) {
  30.             $user->setUserType(UserTypes::INDIVIDUAL);
  31.         } elseif (PackageUserType::SMALL_DEVELOPER == $userPackage->getPackage()->getUserType()) {
  32.             $user->setUserType(UserTypes::SMALL_DEVELOPER);
  33.         } elseif (PackageUserType::COMPOUND_DEVELOPER == $userPackage->getPackage()->getUserType()) {
  34.             $user->setUserType(UserTypes::COMPOUND_DEVELOPER);
  35.         }
  36.         $this->entityManager->persist($user);
  37.         $this->entityManager->flush();
  38.     }
  39. }