src/Core/Content/ProductStream/ScheduledTask/UpdateProductStreamMappingTaskHandler.php line 41

  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Content\ProductStream\ScheduledTask;
  3. use Shopware\Core\Framework\Context;
  4. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  6. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  7. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\MultiFilter;
  8. use Shopware\Core\Framework\Log\Package;
  9. use Shopware\Core\Framework\MessageQueue\ScheduledTask\ScheduledTaskHandler;
  10. use Symfony\Component\Messenger\Attribute\AsMessageHandler;
  11. /**
  12.  * @internal
  13.  */
  14. #[AsMessageHandler(handlesUpdateProductStreamMappingTask::class)]
  15. #[Package('business-ops')]
  16. final class UpdateProductStreamMappingTaskHandler extends ScheduledTaskHandler
  17. {
  18.     /**
  19.      * @internal
  20.      */
  21.     public function __construct(
  22.         EntityRepository $repository,
  23.         private readonly EntityRepository $productStreamRepository
  24.     ) {
  25.         parent::__construct($repository);
  26.     }
  27.     public function run(): void
  28.     {
  29.         $context Context::createDefaultContext();
  30.         $criteria = new Criteria();
  31.         $criteria->addFilter(new MultiFilter(MultiFilter::CONNECTION_OR, [
  32.             new EqualsFilter('filters.type''until'),
  33.             new EqualsFilter('filters.type''since'),
  34.         ]));
  35.         /** @var array<string> $streamIds */
  36.         $streamIds $this->productStreamRepository->searchIds($criteria$context)->getIds();
  37.         $data array_map(fn (string $id) => ['id' => $id], $streamIds);
  38.         $this->productStreamRepository->update($data$context);
  39.     }
  40. }