src/EventSubscriber/RegistrationEventSubscriber.php line 81

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Event;
  4. use App\Event\WebShopEvent;
  5. use App\Service\Constants\LogEvents;
  6. use App\Service\RabbitMQ\RabbitMQDispatcher;
  7. use App\Service\Subscription\SubscriptionService;
  8. use App\Service\UserLog;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use App\Event\AccountRegisterEvent;
  11. class RegistrationEventSubscriber implements EventSubscriberInterface
  12. {
  13.     protected RabbitMQDispatcher $rabbitMQDispatcher;
  14.     protected SubscriptionService $subscriptionService;
  15.     private UserLog $userLog;
  16.     public function __construct(
  17.         RabbitMQDispatcher $rabbitMQDispatcher,
  18.         SubscriptionService    $subscriptionService,
  19.         UserLog             $userLog
  20.     ) {
  21.         $this->rabbitMQDispatcher $rabbitMQDispatcher;
  22.         $this->subscriptionService $subscriptionService;
  23.         $this->userLog $userLog;
  24.     }
  25.     public static function getSubscribedEvents() : array
  26.     {
  27.         return [
  28.             AccountRegisterEvent::NAME => 'sendActivationEmail',
  29.             AccountRegisterEvent::MANUFACTURER_USER_REGISTER_SUCCESS => 'sendManufacturerUserRegisterSuccessEmail',
  30.             AccountRegisterEvent::CUSTOMER_USER_REGISTER_SUCCESS => [
  31.                 ['createNewCustomerUserNotification']
  32.             ],
  33.             AccountRegisterEvent::USER_REGISTERED => [
  34.                 ['sendUserRegisteredEmail'],
  35.                 ['logUserCreated']
  36.             ],
  37.         ];
  38.     }
  39.     public function sendUserRegisteredEmail(AccountRegisterEvent $event)
  40.     {
  41.         $this->rabbitMQDispatcher->dispatch([
  42.             'data' => [
  43.                 'user_uuid' => $event->getUser()->getUuid()
  44.             ],
  45.             'action_name' => 'userRegisteredEmail',
  46.             'consumer_name' => 'notification_consumer'
  47.         ]);
  48.     }
  49.     public function logUserCreated(AccountRegisterEvent $event)
  50.     {
  51.         $this->userLog->log(
  52.             'user',
  53.             LogEvents::USER_CREATED,
  54.             $event->getUser()->getId(),
  55.             $event->getUser()->getName()
  56.         );
  57.     }
  58.     public function sendActivationEmail(AccountRegisterEvent $event)
  59.     {
  60.         $this->rabbitMQDispatcher->dispatch([
  61.             'data' => [
  62.                 'user_id' => $event->getUser()->getId(),
  63.             ],
  64.             'action_name' => 'accountActivationEmail',
  65.             'consumer_name' => 'notification_consumer'
  66.         ]);
  67.     }
  68.     public function sendManufacturerUserRegisterSuccessEmail(AccountRegisterEvent $event)
  69.     {
  70.         $this->rabbitMQDispatcher->dispatch([
  71.             'data' => [
  72.                 'user_id' => $event->getUser()->getId(),
  73.             ],
  74.             'action_name' => 'mfPersonRegisterSuccessEmail',
  75.             'consumer_name' => 'notification_consumer'
  76.         ]);
  77.     }
  78.     public function createNewCustomerUserNotification(AccountRegisterEvent $event)
  79.     {
  80.         if ($customer $event->getUser()->getCustomer()) {
  81.             $this->subscriptionService->proceedEvent(
  82.                 Event::CUSTOMER_APP_USER_CREATED,
  83.                 $customer,
  84.                 ['data' => ['uuid' => $customer->getUuid()]]
  85.             );
  86.         }
  87.     }
  88. }