<?php
namespace App\EventSubscriber\Klaviyo;
use App\Event\CartItemAdded;
use App\Service\Klaviyo\KlaviyoEmail;
use App\Service\Klaviyo\KlaviyoEventService;
use Exception;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RequestStack;
class KlaviyoCartitemAdded implements EventSubscriberInterface
{
public function __construct(
private KlaviyoEventService $klaviyoEventService,
private RequestStack $requestStack,
private KlaviyoEmail $klaviyoEmail,
)
{
}
public function onCartItemAdded(CartItemAdded $event): void
{
try {
$this->klaviyoEventService->track(
'Added to Cart',
$this->klaviyoEmail->getEmail(),
[
'product_id' => $event->getProd()->getId(),
'product_name' => $event->getProd()->getName(),
'price' => $event->getProd()->getPrice(),
'quantity' => $event->getNum(),
'cart_value' => $event->getCartAmount(),
'url' => $this->requestStack->getCurrentRequest()->getUri(),
]
);
} catch (Exception $e) {
}
}
public static function getSubscribedEvents(): array
{
return [
CartItemAdded::NAME => 'onCartItemAdded',
];
}
}