repository = $ruleGroupRepository; } /** * This method will check all the rules when a journal is updated. * * @param UpdatedTransactionJournal $updatedJournalEvent * * @return bool */ public function processRules(UpdatedTransactionJournal $updatedJournalEvent): bool { // get all the user's rule groups, with the rules, order by 'order'. $journal = $updatedJournalEvent->journal; $groups = $this->repository->getActiveGroups($journal->user); /** @var RuleGroup $group */ foreach ($groups as $group) { $rules = $this->repository->getActiveUpdateRules($group); /** @var Rule $rule */ foreach ($rules as $rule) { $processor = Processor::make($rule); $processor->handleTransactionJournal($journal); if ($rule->stop_processing) { break; } } } return true; } /** * This method calls a special bill scanner that will check if the updated journal is part of a bill. * * @param UpdatedTransactionJournal $updatedJournalEvent * * @return bool */ public function scanBills(UpdatedTransactionJournal $updatedJournalEvent): bool { $journal = $updatedJournalEvent->journal; BillScanner::scan($journal); return true; } }