custom/plugins/citycampaign/src/Subscriber/CampaignSubscriber.php line 37

Open in your IDE?
  1. <?php
  2. namespace CityCampaign\Subscriber;
  3. use CityCampaign\Events\CampaignMissionActionEvent;
  4. use CityCampaign\Service\Campaigns\CheckInMissionActionService;
  5. use CityCampaign\Service\Campaigns\StampMissionActionService;
  6. use Psr\Log\LoggerInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Throwable;
  9. class CampaignSubscriber implements EventSubscriberInterface
  10. {
  11.     private LoggerInterface $logger;
  12.     private CheckInMissionActionService $checkInMissionActionService;
  13.     private StampMissionActionService $stampMissionActionService;
  14.     public function __construct(
  15.         LoggerInterface             $logger,
  16.         CheckInMissionActionService $checkInMissionActionService,
  17.         StampMissionActionService $stampMissionActionService
  18.     )
  19.     {
  20.         $this->logger $logger;
  21.         $this->checkInMissionActionService $checkInMissionActionService;
  22.         $this->stampMissionActionService $stampMissionActionService;
  23.     }
  24.     public static function getSubscribedEvents(): array
  25.     {
  26.         // Return the events to listen to as array like this:  <event to listen to> => <method to execute>
  27.         return [
  28.             CampaignMissionActionEvent::EVENT_NAME => [['onCampaignMissionAction'0]],
  29.         ];
  30.     }
  31.     public function onCampaignMissionAction(CampaignMissionActionEvent $event)
  32.     {
  33.         try {
  34.             $campaignType $event->getCampaignType();
  35.             if ('check-in' === $campaignType) {
  36.                 $this->missionCheckIn($event->getId());
  37.             }
  38.             if ('stamp' === $campaignType) {
  39.                 $this->missionStamp($event->getId());
  40.             }
  41.         } catch (Throwable $exception) {
  42.             $this->logger->error($exception->getMessage());
  43.         }
  44.     }
  45.     private function missionCheckIn($campaignId)
  46.     {
  47.         $this->checkInMissionActionService->createCheckInMission($campaignId);
  48.     }
  49.     private function missionStamp($campaignId)
  50.     {
  51.         $this->stampMissionActionService->createStampMission($campaignId);
  52.     }
  53. }