<?php
namespace App\EventSubscriber;
use App\Service\Auth\Auth;
use App\Service\Cart\Cart;
use App\Event\OrderMakedEvent;
use App\Entity\Cart as EntityCart;
use App\Repository\CartRepository;
use App\Repository\ProdRepository;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/** @package App\EventSubscriber */
class ChangeProdNum implements EventSubscriberInterface
{
public function __construct(
private Security $security,
private ProdRepository $prodRepository,
private Cart $Cart,
)
{
}
public function onOrderMaked(OrderMakedEvent $event): void
{
$order = $event->getOrder();
$cart = $this->Cart->getFromOrder($order->getId());
foreach ($cart as $k => $v) {
$prod = $this->prodRepository->find((int) $v['id']);
// Изменяем количество товаров в базе
if ($v['var'] < 2) {
$num = $prod->getNum();
$prod->setNum($num - $v['num']);
} elseif ($v['var'] == 2) {
$num = $prod->getNum2();
$prod->setNum2($num - $v['num']);
} elseif($v['var'] == 3) {
$price = $prod->getPrice3();
$num = $prod->getNum3();
$prod->setNum3($num - $v['num']);
}
// Если количество товара меньше или равно нулю, удаляем его из списка цветов
if ($prod->getNum() < 1 && $prod->getNum2() < 1 && $prod->getNum3() < 1) {
$colors = $prod->getColors();
unset($colors[$prod->getId()]);
$prod->setColors($colors);
}
$this->prodRepository->save();
}
}
public static function getSubscribedEvents(): array
{
return [
OrderMakedEvent::NAME => 'onOrderMaked',
];
}
}