src/EventSubscriber/CartItemSubscriber.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Cart;
  4. use App\Entity\CartItem;
  5. use App\Event\CartItemPrePersistEvent;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class CartItemSubscriber implements EventSubscriberInterface
  9. {
  10.     public function __construct(
  11.         private EntityManagerInterface $_em
  12.     ) {
  13.     }
  14.     public static function getSubscribedEvents(): array
  15.     {
  16.         return [
  17.             CartItemPrePersistEvent::NAME => 'onPrePersist'
  18.         ];
  19.     }
  20.     public function onPrePersist(CartItemPrePersistEvent $event)
  21.     {
  22.         $object $event->getObject();
  23.         $cart $object->getCart();
  24.         if (!$cart) {
  25.             $cart = (new Cart())
  26.                 ->setClient($object->getClient())
  27.                 ->setUser($object->getUser())
  28.             ;
  29.             $this->_em->persist($cart);
  30.             $this->_em->flush();
  31.             $object->setCart($cart);
  32.         }
  33.         $object->setCartItemType($object->getElCourse() ? CartItem::CARTITEM_TYPE_COURSE "");
  34.     }
  35. }