mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-12 15:35:15 +00:00
Migrate to new rule engine.
This commit is contained in:
@@ -98,6 +98,28 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
Log::debug('SearchRuleEngine:: done processing all rules!');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function find(): Collection
|
||||
{
|
||||
Log::debug('SearchRuleEngine::find()');
|
||||
$collection = new Collection;
|
||||
foreach ($this->rules as $rule) {
|
||||
$found = new Collection;
|
||||
if (true === $rule->strict) {
|
||||
$found = $this->findStrictRule($rule);
|
||||
}
|
||||
if (false === $rule->strict) {
|
||||
$found = $this->findNonStrictRule($rule);
|
||||
}
|
||||
$collection = $collection->merge($found);
|
||||
}
|
||||
$collection = $collection->unique();
|
||||
|
||||
return $collection;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Rule $rule
|
||||
* @throws FireflyException
|
||||
@@ -105,10 +127,10 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
private function fireRule(Rule $rule): void
|
||||
{
|
||||
if (true === $rule->strict) {
|
||||
$this->fileStrictRule($rule);
|
||||
$this->fireStrictRule($rule);
|
||||
return;
|
||||
}
|
||||
$this->fileNonStrictRule($rule);
|
||||
$this->fireNonStrictRule($rule);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -178,9 +200,34 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
* @param Rule $rule
|
||||
* @throws FireflyException
|
||||
*/
|
||||
private function fileStrictRule(Rule $rule): void
|
||||
private function fireStrictRule(Rule $rule): void
|
||||
{
|
||||
Log::debug(sprintf('SearchRuleEngine::fireStrictRule(%d)!', $rule->id));
|
||||
$collection = $this->findStrictRule($rule);
|
||||
|
||||
$this->processResults($rule, $collection);
|
||||
Log::debug(sprintf('SearchRuleEngine:: done processing strict rule #%d', $rule->id));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Rule $rule
|
||||
* @throws FireflyException
|
||||
*/
|
||||
private function fireNonStrictRule(Rule $rule): void
|
||||
{
|
||||
Log::debug(sprintf('SearchRuleEngine::fireNonStrictRule(%d)!', $rule->id));
|
||||
$collection = $this->findNonStrictRule($rule);
|
||||
|
||||
$this->processResults($rule, $collection);
|
||||
Log::debug(sprintf('SearchRuleEngine:: done processing non-strict rule #%d', $rule->id));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Rule $rule
|
||||
* @return Collection
|
||||
*/
|
||||
private function findStrictRule(Rule $rule): Collection
|
||||
{
|
||||
Log::debug(sprintf('SearchRuleEngine::fileStrictRule(%d)!', $rule->id));
|
||||
$searchArray = [];
|
||||
/** @var RuleTrigger $ruleTrigger */
|
||||
foreach ($rule->ruleTriggers as $ruleTrigger) {
|
||||
@@ -212,18 +259,15 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
$collection = $result->getCollection();
|
||||
Log::debug(sprintf('SearchRuleEngine:: Found %d transactions using search engine with query "%s".', $collection->count(), $searchQuery));
|
||||
|
||||
$this->processResults($rule, $collection);
|
||||
Log::debug(sprintf('SearchRuleEngine:: done processing strict rule #%d', $rule->id));
|
||||
return $collection;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Rule $rule
|
||||
* @throws FireflyException
|
||||
* @return Collection
|
||||
*/
|
||||
private function fileNonStrictRule(Rule $rule): void
|
||||
private function findNonStrictRule(Rule $rule): Collection
|
||||
{
|
||||
Log::debug(sprintf('SearchRuleEngine::fileNonStrictRule(%d)!', $rule->id));
|
||||
|
||||
// start a search query for individual each trigger:
|
||||
$total = new Collection;
|
||||
$count = 0;
|
||||
@@ -280,8 +324,6 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
});
|
||||
|
||||
Log::debug(sprintf('SearchRuleEngine:: Found %d transactions using search engine.', $unique->count()));
|
||||
|
||||
$this->processResults($rule, $unique);
|
||||
Log::debug(sprintf('SearchRuleEngine:: done processing non-strict rule #%d', $rule->id));
|
||||
return $unique;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user