Files
ltsecurityinc/app/code/Amasty/ElasticSearch/Cron/RelevanceRuleDailyUpdate.php
T

84 lines
2.2 KiB
PHP
Executable File

<?php
declare(strict_types=1);
/**
* @author Amasty Team
* @copyright Copyright (c) Amasty (https://www.amasty.com)
* @package Elastic Search Base for Magento 2
*/
namespace Amasty\ElasticSearch\Cron;
use Amasty\ElasticSearch\Api\Data\RelevanceRuleInterface;
use Amasty\ElasticSearch\Api\RelevanceRuleRepositoryInterface;
use Amasty\ElasticSearch\Model\ResourceModel\RelevanceRule\CollectionFactory;
class RelevanceRuleDailyUpdate
{
/**
* @var CollectionFactory
*/
private $ruleCollectionFactory;
/**
* @var RelevanceRuleRepositoryInterface
*/
private $relevanceRuleRepository;
public function __construct(
CollectionFactory $ruleCollectionFactory,
RelevanceRuleRepositoryInterface $relevanceRuleRepository
) {
$this->ruleCollectionFactory = $ruleCollectionFactory;
$this->relevanceRuleRepository = $relevanceRuleRepository;
}
public function execute(): void
{
foreach ($this->getRulesForEnable() as $relevanceRule) {
$relevanceRule->setIsEnabled(true);
$this->relevanceRuleRepository->save($relevanceRule);
}
foreach ($this->getRulesForDisable() as $relevanceRule) {
$relevanceRule->setIsEnabled(false);
$this->relevanceRuleRepository->save($relevanceRule);
}
}
/**
* @return RelevanceRuleInterface[]
*/
private function getRulesForEnable(): iterable
{
$collection = $this->ruleCollectionFactory->create();
$collection->addStatusFilter(false);
$collection->addFieldToFilter(
RelevanceRuleInterface::FROM_DATE,
['lt' => new \Zend_Db_Expr('NOW()')]
);
$collection->addFieldToFilter(
RelevanceRuleInterface::TO_DATE,
['gt' => new \Zend_Db_Expr('NOW()')]
);
return $collection;
}
/**
* @return RelevanceRuleInterface[]
*/
private function getRulesForDisable(): iterable
{
$collection = $this->ruleCollectionFactory->create();
$collection->addStatusFilter(true);
$collection->addFieldToFilter(
RelevanceRuleInterface::TO_DATE,
['lt' => new \Zend_Db_Expr('NOW()')]
);
return $collection;
}
}