diff --git a/app/Handlers/Events/FireRulesForStore.php b/app/Handlers/Events/FireRulesForStore.php index 96853ad607..2adb382390 100644 --- a/app/Handlers/Events/FireRulesForStore.php +++ b/app/Handlers/Events/FireRulesForStore.php @@ -45,7 +45,6 @@ class FireRulesForStore */ public function handle(TransactionJournalStored $event) { - Log::debug('Before event (in handle). From account name is: ' . $event->journal->source_account->name); // get all the user's rule groups, with the rules, order by 'order'. /** @var User $user */ $user = Auth::user(); diff --git a/app/Handlers/Events/FireRulesForUpdate.php b/app/Handlers/Events/FireRulesForUpdate.php index a88a097e85..6e891626fc 100644 --- a/app/Handlers/Events/FireRulesForUpdate.php +++ b/app/Handlers/Events/FireRulesForUpdate.php @@ -9,7 +9,12 @@ namespace FireflyIII\Handlers\Events; +use Auth; use FireflyIII\Events\TransactionJournalUpdated; +use FireflyIII\Models\Rule; +use FireflyIII\Models\RuleGroup; +use FireflyIII\Rules\Processor; +use FireflyIII\User; use Log; /** @@ -37,7 +42,33 @@ class FireRulesForUpdate */ public function handle(TransactionJournalUpdated $event) { - Log::debug('Fire rules for update!'); + // 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; + } + + } + } } } \ No newline at end of file