src/EventSubscriber/ChangeProdNum.php line 27

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