src/EventSubscriber/InventorySubscriber.php line 43

  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Inventory;
  4. use App\EventSubscriber\Traits\InventorySubscriberHandlerTrait;
  5. use App\Repository\InventoryRepository;
  6. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
  7. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeCrudActionEvent;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\HttpFoundation\RequestStack;
  10. class InventorySubscriber implements EventSubscriberInterface
  11. {
  12.     use InventorySubscriberHandlerTrait;
  13.     /**
  14.      * @param InventoryRepository $inventoryRepository
  15.      * @param RequestStack $requestStack
  16.      */
  17.     public function __construct(
  18.         protected readonly InventoryRepository $inventoryRepository,
  19.         protected readonly RequestStack        $requestStack
  20.     )
  21.     {
  22.     }
  23.     /**
  24.      * @return array
  25.      */
  26.     public static function getSubscribedEvents(): array
  27.     {
  28.         return [
  29.             BeforeCrudActionEvent::class => ['beforeCrudAction'],
  30.             AfterEntityUpdatedEvent::class => ['afterEntityUpdatedEvent'],
  31.         ];
  32.     }
  33.     /**
  34.      * @param BeforeCrudActionEvent $event
  35.      * @return void
  36.      */
  37.     public function beforeCrudAction(BeforeCrudActionEvent $event): void
  38.     {
  39.         if (!$event->getAdminContext()->getRequest()->isMethod('POST')) {
  40.             return;
  41.         }
  42.         $entity $event->getAdminContext()->getEntity()->getInstance();
  43.         if ($entity instanceof Inventory) {
  44.             $this->processQtyBeforeUpdate($event$entity);
  45.         }
  46.     }
  47.     /**
  48.      * @param AfterEntityUpdatedEvent $event
  49.      * @return void
  50.      */
  51.     public function afterEntityUpdatedEvent(AfterEntityUpdatedEvent $event): void
  52.     {
  53.         $entity $event->getEntityInstance();
  54.         if ($entity instanceof Inventory) {
  55.             $this->processQtyAfterUpdate($entity);
  56.         }
  57.     }
  58. }