src/Core/Content/ProductStream/ScheduledTask/UpdateProductStreamMappingTaskHandler.php line 41
<?php declare(strict_types=1);
namespace Shopware\Core\Content\ProductStream\ScheduledTask;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\MultiFilter;
use Shopware\Core\Framework\Log\Package;
use Shopware\Core\Framework\MessageQueue\ScheduledTask\ScheduledTaskHandler;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
/**
* @internal
*/
#[AsMessageHandler(handles: UpdateProductStreamMappingTask::class)]
#[Package('business-ops')]
final class UpdateProductStreamMappingTaskHandler extends ScheduledTaskHandler
{
/**
* @internal
*/
public function __construct(
EntityRepository $repository,
private readonly EntityRepository $productStreamRepository
) {
parent::__construct($repository);
}
public function run(): void
{
$context = Context::createDefaultContext();
$criteria = new Criteria();
$criteria->addFilter(new MultiFilter(MultiFilter::CONNECTION_OR, [
new EqualsFilter('filters.type', 'until'),
new EqualsFilter('filters.type', 'since'),
]));
/** @var array<string> $streamIds */
$streamIds = $this->productStreamRepository->searchIds($criteria, $context)->getIds();
$data = array_map(fn (string $id) => ['id' => $id], $streamIds);
$this->productStreamRepository->update($data, $context);
}
}