custom/plugins/SwagB2bPlatform/components/OrderNumber/BridgePlatform/OrderNumberSubscriber.php line 33

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\B2B\OrderNumber\BridgePlatform;
  3. use Shopware\B2B\OrderNumber\Framework\OrderNumberRepositoryInterface;
  4. use Shopware\Core\Content\Product\ProductEvents;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use function array_key_exists;
  8. class OrderNumberSubscriber implements EventSubscriberInterface
  9. {
  10.     private const PRODUCT_NUMBER_KEY 'productNumber';
  11.     /**
  12.      * @var OrderNumberRepositoryInterface
  13.      */
  14.     private $orderNumberRepository;
  15.     public function __construct(
  16.         OrderNumberRepositoryInterface $orderNumberRepository
  17.     ) {
  18.         $this->orderNumberRepository $orderNumberRepository;
  19.     }
  20.     public static function getSubscribedEvents(): array
  21.     {
  22.         return [
  23.             ProductEvents::PRODUCT_WRITTEN_EVENT => 'deleteMatchingCustomOrderNumbers',
  24.         ];
  25.     }
  26.     public function deleteMatchingCustomOrderNumbers(EntityWrittenEvent $event): void
  27.     {
  28.         $customOrderNumbers = [];
  29.         foreach ($event->getPayloads() as $payload) {
  30.             if (array_key_exists(self::PRODUCT_NUMBER_KEY$payload)) {
  31.                 $customOrderNumbers[] = $payload[self::PRODUCT_NUMBER_KEY];
  32.             }
  33.         }
  34.         $this->orderNumberRepository
  35.             ->removeMultipleOrderNumbersByCustomOrderNumber($customOrderNumbers);
  36.     }
  37. }