src/EventSubscriber/Klaviyo/KlaviyoCartitemAdded.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber\Klaviyo;
  3. use App\Event\CartItemAdded;
  4. use App\Service\Klaviyo\KlaviyoEmail;
  5. use App\Service\Klaviyo\KlaviyoEventService;
  6. use Exception;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpFoundation\RequestStack;
  9. class KlaviyoCartitemAdded implements EventSubscriberInterface
  10. {
  11.     public function __construct(
  12.         private KlaviyoEventService $klaviyoEventService,
  13.         private RequestStack $requestStack,
  14.         private KlaviyoEmail $klaviyoEmail,  
  15.     )
  16.     {
  17.         
  18.     }
  19.     public function onCartItemAdded(CartItemAdded $event): void
  20.     {
  21.         try {
  22.             $this->klaviyoEventService->track(
  23.                 'Added to Cart',
  24.                 $this->klaviyoEmail->getEmail(),
  25.                 [
  26.                     'product_id'   => $event->getProd()->getId(),
  27.                     'product_name' => $event->getProd()->getName(),
  28.                     'price'        => $event->getProd()->getPrice(),
  29.                     'quantity'     => $event->getNum(),
  30.                     'cart_value'   => $event->getCartAmount(),
  31.                     'url'          => $this->requestStack->getCurrentRequest()->getUri(),
  32.                 ]
  33.             );
  34.         } catch (Exception $e) {
  35.             echo $e->getMessage();die();
  36.         }
  37.     }
  38.     public static function getSubscribedEvents(): array
  39.     {
  40.         return [
  41.             CartItemAdded::NAME => 'onCartItemAdded',
  42.         ];
  43.     }
  44. }