src/EventSubscriber/ChangeProdNum.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Service\Auth\Auth;
  4. use App\Service\Cart\Cart;
  5. use App\Event\OrderMakedEvent;
  6. use App\Entity\Cart as EntityCart;
  7. use App\Repository\CartRepository;
  8. use App\Repository\ProdRepository;
  9. use Symfony\Component\Security\Core\Security;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. /** @package App\EventSubscriber */
  12. class ChangeProdNum implements EventSubscriberInterface
  13. {
  14.     public function __construct(
  15.         private Security $security,
  16.         private ProdRepository $prodRepository,
  17.         private Cart $Cart,
  18.     )
  19.     {
  20.     
  21.     }    
  22.     public function onOrderMaked(OrderMakedEvent $event): void
  23.     {
  24.         $order $event->getOrder();
  25.         $cart $this->Cart->getFromOrder($order->getId());
  26.         
  27.         foreach ($cart as $k => $v) {
  28.             $prod $this->prodRepository->find((int) $v['id']);            
  29.             
  30.             // Изменяем количество товаров в базе
  31.             if ($v['var'] < 2) {
  32.                 $num $prod->getNum();
  33.                 $prod->setNum($num $v['num']);
  34.             } elseif ($v['var'] == 2) {
  35.                 $num $prod->getNum2();
  36.                 $prod->setNum2($num $v['num']);
  37.             } elseif($v['var'] == 3) {
  38.                 $price $prod->getPrice3();
  39.                 $num $prod->getNum3();
  40.                 $prod->setNum3($num $v['num']);
  41.             }
  42.             // Если количество товара меньше или равно нулю, удаляем его из списка цветов
  43.             if ($prod->getNum() < && $prod->getNum2() < && $prod->getNum3() < 1) {
  44.                 $colors $prod->getColors();                
  45.                 unset($colors[$prod->getId()]);
  46.                 $prod->setColors($colors);
  47.             }
  48.             $this->prodRepository->save();
  49.         }
  50.     }
  51.     public static function getSubscribedEvents(): array
  52.     {
  53.         return [
  54.             OrderMakedEvent::NAME => 'onOrderMaked',
  55.         ];
  56.     }
  57. }