src/EventListener/Analitics/PurchaseListener.php line 49

Open in your IDE?
  1. <?php
  2. namespace App\EventListener\Analitics;
  3. use App\Entity\Gos\Orders;
  4. use App\Event\Analitics\PurchaseEvent;
  5. use App\Utils\FacebookPixel\Api\FacebookPixelService;
  6. use App\Utils\Uniqskills\MixPanel\MixPanelService;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. class PurchaseListener implements EventSubscriberInterface
  10. {
  11.     private $entityManager;
  12.     private $mixPanelService;
  13.     private $facebookPixelService;
  14.     public function __construct(
  15.         EntityManagerInterface $entityManager,
  16.         MixPanelService $mixPanelService,
  17.         FacebookPixelService $facebookPixelService
  18.     ) {
  19.         $this->entityManager   $entityManager;
  20.         $this->mixPanelService $mixPanelService;
  21.         $this->facebookPixelService $facebookPixelService;
  22.     }
  23.     public static function getSubscribedEvents(): array
  24.     {
  25.         return [
  26.             PurchaseEvent::PURCHASE => [
  27.                 ['sendMixPixel'10],
  28.                 ['sendFacebookPixel'9]
  29.             ],
  30.         ];
  31.     }
  32.     public function sendMixPixel($event): void
  33.     {
  34.         $orderId $event->getOrderId();
  35.         $order   $this->entityManager->getRepository(Orders::class)->find($orderId);
  36.         $this->mixPanelService->sendCartRenderEvent([
  37.             'step'  => 'success',
  38.             'order' => $this->mixPanelService->prepareOrderData($order),
  39.         ], $order->getUser());
  40.     }
  41.     public function sendFacebookPixel($event)
  42.     {
  43.         $orderId $event->getOrderId();
  44.         $order   $this->entityManager->getRepository(Orders::class)->find($orderId);
  45.         $this->facebookPixelService->setEvent('Purchase'$order->getId())->request();
  46.     }
  47. }