src/EventSubscriber/SubscriptionSubscriber.php line 33

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventSubscriber;
  4. use App\Entity\Product;
  5. use App\Event\SubscriptionCreatedEvent;
  6. use App\Service\Gamification\DailyMissionAllocator;
  7. use Psr\Log\LoggerInterface;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. class SubscriptionSubscriber implements EventSubscriberInterface
  10. {
  11.     private LoggerInterface $logger;
  12.     private DailyMissionAllocator $dailyMissionAllocator;
  13.     public function __construct(
  14.         LoggerInterface       $logger,
  15.         DailyMissionAllocator $dailyMissionAllocator
  16.     ) {
  17.         $this->logger $logger;
  18.         $this->dailyMissionAllocator $dailyMissionAllocator;
  19.     }
  20.     public static function getSubscribedEvents(): array
  21.     {
  22.         return [
  23.             SubscriptionCreatedEvent::class => [
  24.                 ['onLicenseSubscriptionCreated'10],
  25.             ],
  26.         ];
  27.     }
  28.     public function onLicenseSubscriptionCreated(SubscriptionCreatedEvent $event): void
  29.     {
  30.         $subscription $event->getSubscription();
  31.         if (null === $subscription->getProduct() || Product::PRODUCT_TYPE_LICENSE !== $subscription->getProduct()->getType()) {
  32.             return;
  33.         }
  34.         $member $subscription->getMember();
  35.         if (null === $member) {
  36.             $this->logger->warning('Member not found for subscription ' $subscription->getId());
  37.             return;
  38.         }
  39.         $this->dailyMissionAllocator->assignDailyMissions([$member]);
  40.     }
  41. }