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; } }