vendor/store.shopware.com/swagb2bplatform/components/OrderNumber/BridgePlatform/OrderNumberSubscriber.php line 30

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.     private OrderNumberRepositoryInterface $orderNumberRepository;
  12.     public function __construct(
  13.         OrderNumberRepositoryInterface $orderNumberRepository
  14.     ) {
  15.         $this->orderNumberRepository $orderNumberRepository;
  16.     }
  17.     public static function getSubscribedEvents(): array
  18.     {
  19.         return [
  20.             ProductEvents::PRODUCT_WRITTEN_EVENT => 'deleteMatchingCustomOrderNumbers',
  21.         ];
  22.     }
  23.     public function deleteMatchingCustomOrderNumbers(EntityWrittenEvent $event): void
  24.     {
  25.         $customOrderNumbers = [];
  26.         foreach ($event->getPayloads() as $payload) {
  27.             if (array_key_exists(self::PRODUCT_NUMBER_KEY$payload)) {
  28.                 $customOrderNumbers[] = $payload[self::PRODUCT_NUMBER_KEY];
  29.             }
  30.         }
  31.         $this->orderNumberRepository
  32.             ->removeMultipleOrderNumbersByCustomOrderNumber($customOrderNumbers);
  33.     }
  34. }