diff --git a/app/Http/Controllers/RuleController.php b/app/Http/Controllers/RuleController.php index b9b1ca235d..a5fef2265a 100644 --- a/app/Http/Controllers/RuleController.php +++ b/app/Http/Controllers/RuleController.php @@ -16,7 +16,9 @@ use FireflyIII\Http\Requests; use FireflyIII\Http\Requests\RuleFormRequest; use FireflyIII\Http\Requests\RuleGroupFormRequest; use FireflyIII\Models\Rule; +use FireflyIII\Models\RuleAction; use FireflyIII\Models\RuleGroup; +use FireflyIII\Models\RuleTrigger; use FireflyIII\Repositories\Rule\RuleRepositoryInterface; use Input; use Preferences; @@ -84,7 +86,7 @@ class RuleController extends Controller 'rule-actions' => $request->get('rule-action'), 'rule-action-values' => $request->get('rule-action-value'), 'rule-action-stop' => $request->get('rule-action-stop'), - 'stop_processing' => $request->get('stop_processing') + 'stop_processing' => $request->get('stop_processing'), ]; $rule = $repository->storeRule($data); @@ -134,7 +136,7 @@ class RuleController extends Controller 'oldTrigger' => $oldTrigger, 'oldValue' => $oldValue, 'oldChecked' => $oldChecked, - 'count' => $count + 'count' => $count, ] )->render(); $newIndex++; @@ -154,8 +156,7 @@ class RuleController extends Controller 'oldTrigger' => $oldAction, 'oldValue' => $oldValue, 'oldChecked' => $oldChecked, - 'actions' => $possibleActions, - 'count' => $count + 'count' => $count, ] )->render(); $newIndex++; @@ -208,7 +209,8 @@ class RuleController extends Controller return redirect(Session::get('rules.rule-group.create.url')); } - public function editRule(Rule $rule) { + public function editRule(Rule $rule) + { // count for current rule's triggers/actions. $triggerCount = 0; @@ -218,25 +220,6 @@ class RuleController extends Controller $triggers = []; $actions = []; - // array of valid values for triggers (for form). - $ruleTriggers = array_keys(Config::get('firefly.rule-triggers')); - $possibleTriggers = []; - foreach ($ruleTriggers as $key) { - if ($key != 'user_action') { - $possibleTriggers[$key] = trans('firefly.rule_trigger_' . $key . '_choice'); - } - } - unset($key, $ruleTriggers); - - // array of valid values for actions - $ruleActions = array_keys(Config::get('firefly.rule-actions')); - $possibleActions = []; - foreach ($ruleActions as $key) { - $possibleActions[$key] = trans('firefly.rule_action_' . $key . '_choice'); - } - unset($key, $ruleActions); - - // has old input? if (Input::old()) { // process old triggers. @@ -253,8 +236,7 @@ class RuleController extends Controller 'oldTrigger' => $oldTrigger, 'oldValue' => $oldValue, 'oldChecked' => $oldChecked, - 'triggers' => $possibleTriggers, - 'count' => $count + 'count' => $count, ] )->render(); $newIndex++; @@ -274,16 +256,68 @@ class RuleController extends Controller 'oldTrigger' => $oldAction, 'oldValue' => $oldValue, 'oldChecked' => $oldChecked, - 'actions' => $possibleActions, - 'count' => $count + 'count' => $count, + ] + )->render(); + $newIndex++; + } + } else { + // get current triggers + $newIndex = 0; + /** + * @var int $index + * @var RuleTrigger $entry + */ + foreach ($rule->ruleTriggers as $index => $entry) { + if ($entry->trigger_type != 'user_action') { + $count = ($newIndex + 1); + $triggerCount++; + $oldTrigger = $entry->trigger_type; + $oldValue = $entry->trigger_value; + $oldChecked = $entry->stop_processing; + $oldTriggers[] = view( + 'rules.partials.trigger', + [ + 'oldTrigger' => $oldTrigger, + 'oldValue' => $oldValue, + 'oldChecked' => $oldChecked, + 'count' => $count, + ] + )->render(); + } + $newIndex++; + } + + // get current actions + $newIndex = 0; + /** + * @var int $index + * @var RuleAction $entry + */ + foreach ($rule->ruleActions as $index => $entry) { + $count = ($newIndex + 1); + $actionCount++; + $oldAction = $entry->action_type; + $oldValue = $entry->action_value; + $oldChecked = $entry->stop_processing; + $oldActions[] = view( + 'rules.partials.action', + [ + 'oldTrigger' => $oldAction, + 'oldValue' => $oldValue, + 'oldChecked' => $oldChecked, + 'count' => $count, ] )->render(); $newIndex++; } } + // get rule trigger for update / store-journal: + $primaryTrigger = $rule->ruleTriggers()->where('trigger_type','user_action')->first()->trigger_value; - $subTitle = trans('firefly.edit_rule_group', ['title' => $rule->title]); + + $subTitle = trans('firefly.edit_rule', ['title' => $rule->title]); // put previous url in session if not redirect from store (not "return_to_edit"). if (Session::get('rules.rule.edit.fromUpdate') !== true) { @@ -293,7 +327,8 @@ class RuleController extends Controller Session::flash('gaEventCategory', 'rules'); Session::flash('gaEventAction', 'edit-rule'); - return view('rules.rule.edit', compact('rule', 'subTitle')); + return view('rules.rule.edit', compact('rule', 'subTitle','primaryTrigger', + 'oldTriggers', 'oldActions', 'triggerCount', 'actionCount')); } diff --git a/database/seeds/TestDataSeeder.php b/database/seeds/TestDataSeeder.php index d12955607a..49550f1b0a 100644 --- a/database/seeds/TestDataSeeder.php +++ b/database/seeds/TestDataSeeder.php @@ -370,9 +370,9 @@ class TestDataSeeder extends Seeder $rule->ruleGroup()->associate(RuleGroup::find(3)); $rule->order = 2; $rule->active = 1; - $rule->stop_processing = 0; + $rule->stop_processing = 1; $rule->title = 'Rent'; - $rule->description = null; + $rule->description = 'Do something with rent.'; $rule->save(); @@ -383,7 +383,7 @@ class TestDataSeeder extends Seeder $ruleTrigger->active = 1; $ruleTrigger->stop_processing = 0; $ruleTrigger->trigger_type = 'user_action'; - $ruleTrigger->trigger_value = 'store-journal'; + $ruleTrigger->trigger_value = 'update-journal'; $ruleTrigger->save(); unset($ruleTrigger); @@ -405,7 +405,7 @@ class TestDataSeeder extends Seeder $ruleTrigger->rule()->associate($rule); $ruleTrigger->order = 3; $ruleTrigger->active = 1; - $ruleTrigger->stop_processing = 0; + $ruleTrigger->stop_processing = 1; $ruleTrigger->trigger_type = 'from_account_is'; $ruleTrigger->trigger_value = 'MyBank Checking Account'; @@ -428,7 +428,7 @@ class TestDataSeeder extends Seeder $ruleAction->rule()->associate($rule); $ruleAction->order = 2; $ruleAction->active = 1; - $ruleAction->stop_processing = 0; + $ruleAction->stop_processing = 1; $ruleAction->action_type = 'set_budget'; $ruleAction->action_value = 'Bills'; $ruleAction->save(); diff --git a/resources/lang/en_US/firefly.php b/resources/lang/en_US/firefly.php index 87d37a9c68..b38a75ce3e 100644 --- a/resources/lang/en_US/firefly.php +++ b/resources/lang/en_US/firefly.php @@ -74,6 +74,8 @@ return [ 'action_value' => 'Action value', 'stop_executing_other_actions' => 'Stop executing other actions', 'add_rule_action' => 'Add new action', + 'edit_rule' => 'Edit rule ":title"', + 'update_rule' => 'Update rule', // actions and triggers 'rule_trigger_user_action' => 'User action is ":trigger_value"', diff --git a/resources/views/rules/rule-group/edit.twig b/resources/views/rules/rule-group/edit.twig index a589c65715..4156879820 100644 --- a/resources/views/rules/rule-group/edit.twig +++ b/resources/views/rules/rule-group/edit.twig @@ -38,7 +38,7 @@