src/Postroyka/AccountBundle/EventListener/CartListener.php line 31

Open in your IDE?
  1. <?php
  2. namespace Postroyka\AccountBundle\EventListener;
  3. use Postroyka\AccountBundle\Provider\ExtendedUserProvider;
  4. use Postroyka\AppBundle\Provider\CartProvider;
  5. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  6. class CartListener
  7. {
  8.     /**
  9.      * @var CartProvider
  10.      */
  11.     private $cartProvider;
  12.     /**
  13.      * @var ExtendedUserProvider
  14.      */
  15.     private $extendedUserProvider;
  16.     /**
  17.      * @param CartProvider $cartProvider
  18.      * @param ExtendedUserProvider $extendedUserProvider
  19.      */
  20.     public function __construct(CartProvider $cartProviderExtendedUserProvider $extendedUserProvider)
  21.     {
  22.         $this->cartProvider $cartProvider;
  23.         $this->extendedUserProvider $extendedUserProvider;
  24.     }
  25.     public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
  26.     {
  27.         $user $event->getAuthenticationToken()->getUser();
  28.         $extendedUser $this->extendedUserProvider->getByUser($user);
  29.         if ($extendedUser->getId()) {
  30.             $cart $extendedUser->getCart();
  31.             if ($cart && !$cart->isEmpty()) {
  32.                 $this->cartProvider->saveCart($user$cart);
  33.             } else {
  34.                 $cart $this->cartProvider->getCart($user);
  35.                 // Принудительное обновление корзины для пересчета скидки
  36.                 $cart->setUpdatedAt(new \DateTime('01.01.2000'));
  37.                 $this->cartProvider->saveCart($user$cart);
  38.             }
  39.         }
  40.     }
  41. }