. */ declare(strict_types=1); namespace FireflyIII\Handlers\Events; use FireflyIII\Events\StoredTransactionJournal; use FireflyIII\Models\Rule; use FireflyIII\Models\RuleGroup; use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface; use FireflyIII\TransactionRules\Processor; /** * Class StoredJournalEventHandler */ class StoredJournalEventHandler { /** * This method grabs all the users rules and processes them. * * @param StoredTransactionJournal $storedJournalEvent * * @return bool * @throws \FireflyIII\Exceptions\FireflyException */ public function processRules(StoredTransactionJournal $storedJournalEvent): bool { $journal = $storedJournalEvent->journal; // create objects: $ruleGroupRepos = app(RuleGroupRepositoryInterface::class); $groups = $ruleGroupRepos->getActiveGroups($journal->user); /** @var RuleGroup $group */ foreach ($groups as $group) { $rules = $ruleGroupRepos->getActiveStoreRules($group); /** @var Rule $rule */ foreach ($rules as $rule) { $processor = Processor::make($rule); $processor->handleTransactionJournal($journal); if ($rule->stop_processing) { break; } } } return true; } }