src/EventSubscriber/PiggySubscriber.php line 40

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Component\Piggy\Client\PiggyClient;
  4. use App\Event\NewsletterEvent;
  5. use Psr\Log\LoggerInterface;
  6. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class PiggySubscriber implements EventSubscriberInterface
  9. {
  10.     /**
  11.      * @var ParameterBagInterface
  12.      */
  13.     protected $parameterBag;
  14.     /**
  15.      * @var LoggerInterface
  16.      */
  17.     private $logger;
  18.     /**
  19.      * @var PiggyClient
  20.      */
  21.     private $piggyClient;
  22.     public function __construct(ParameterBagInterface $parameterBagLoggerInterface $loggerPiggyClient $piggyClient)
  23.     {
  24.         $this->parameterBag $parameterBag;
  25.         $this->logger $logger;
  26.         $this->piggyClient $piggyClient;
  27.     }
  28.     public static function getSubscribedEvents(): array
  29.     {
  30.         return [
  31.             NewsletterEvent::SUBSCRIBED => 'onNewsletterSubscription',
  32.         ];
  33.     }
  34.     public function onNewsletterSubscription(NewsletterEvent $event)
  35.     {
  36.         $email $event->getEmail();
  37.         if (!($contact $this->piggyClient->findOrCreateByEmail($email)) || empty($contact['data']['uuid'])) {
  38.             $this->logger->error(
  39.                 $this->logMessage('Newsletter: Piggy contact could not be found or created'),
  40.                 ['email' => $email]
  41.             );
  42.             return;
  43.         }
  44.         try {
  45.             $this->piggyClient->addSubscription($contact['data']['uuid']);
  46.         } catch (\Exception $exception) {
  47.             $this->logger->error($this->logMessage('Newsletter: Error adding subscription'), [
  48.                 'email' => $email,
  49.                 'contact_uuid' => $contact['data']['uuid'],
  50.                 'message' => $exception->getMessage(),
  51.             ]);
  52.         }
  53.     }
  54.     private function logMessage(string $message): string
  55.     {
  56.         return sprintf('[PiggySubscriber] %s'$message);
  57.     }
  58. }