From aa1b9fa5a57423f8553286addb45dc69ec5b83fb Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 25 Aug 2019 07:35:26 +0200 Subject: [PATCH] Rules will no longer list the "user-action" trigger Rules will have a "moment" field that says either "update-journal" or "store-journal". --- app/Transformers/RuleTransformer.php | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/app/Transformers/RuleTransformer.php b/app/Transformers/RuleTransformer.php index 7eeeeede04..330c59b105 100644 --- a/app/Transformers/RuleTransformer.php +++ b/app/Transformers/RuleTransformer.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace FireflyIII\Transformers; +use FireflyIII\Exceptions\FireflyException; use FireflyIII\Models\Rule; use FireflyIII\Models\RuleAction; use FireflyIII\Models\RuleTrigger; @@ -73,6 +74,7 @@ class RuleTransformer extends AbstractTransformer 'active' => $rule->active, 'strict' => $rule->strict, 'stop_processing' => $rule->stop_processing, + 'moment' => $this->getRuleMoment($rule), 'triggers' => $this->triggers($rule), 'actions' => $this->actions($rule), 'links' => [ @@ -112,6 +114,29 @@ class RuleTransformer extends AbstractTransformer return $result; } + /** + * @param Rule $rule + * + * @return string + * @throws FireflyException + */ + private function getRuleMoment(Rule $rule): string + { + $moment = null; + $triggers = $this->ruleRepository->getRuleTriggers($rule); + /** @var RuleTrigger $ruleTrigger */ + foreach ($triggers as $ruleTrigger) { + if ('user_action' === $ruleTrigger->trigger_type) { + $moment = $ruleTrigger->trigger_value; + } + } + if (null === $moment) { + throw new FireflyException(sprintf('Rule #%d has no valid trigger moment. Edit it in the Firefly III user interface to correct this.', $rule->id)); + } + + return $moment; + } + /** * @param Rule $rule * @@ -123,6 +148,9 @@ class RuleTransformer extends AbstractTransformer $triggers = $this->ruleRepository->getRuleTriggers($rule); /** @var RuleTrigger $ruleTrigger */ foreach ($triggers as $ruleTrigger) { + if ('user_action' === $ruleTrigger->trigger_type) { + continue; + } $result[] = [ 'id' => (int)$ruleTrigger->id, 'created_at' => $ruleTrigger->created_at->toAtomString(),