/** * Handle the event. * * @param TransactionJournalUpdated $event * * @return void */ public function handle(TransactionJournalUpdated $event) { // get all the user's rule groups, with the rules, order by 'order'. /** @var User $user */ $user = Auth::user(); $groups = $user->ruleGroups()->where('rule_groups.active', 1)->orderBy('order', 'ASC')->get(); // /** @var RuleGroup $group */ foreach ($groups as $group) { Log::debug('Now processing group "' . $group->title . '".'); $rules = $group->rules()->leftJoin('rule_triggers', 'rules.id', '=', 'rule_triggers.rule_id')->where('rule_triggers.trigger_type', 'user_action')->where('rule_triggers.trigger_value', 'update-journal')->where('rules.active', 1)->get(['rules.*']); /** @var Rule $rule */ foreach ($rules as $rule) { Log::debug('Now handling rule #' . $rule->id . ' (' . $rule->title . ')'); $processor = new Processor($rule, $event->journal); // get some return out of this? $processor->handle(); if ($rule->stop_processing) { break; } } } }
/** * @param Collection $groups * @param TransactionJournal $journal */ private function fireRule(Collection $groups, TransactionJournal $journal) { /** @var RuleGroup $group */ foreach ($groups as $group) { /** @var Rule $rule */ foreach ($group->rules as $rule) { $processor = new Processor($rule, $journal); $processor->handle(); if ($rule->stop_processing) { break; } } } }