diff --git a/app/Support/Http/Controllers/RenderPartialViews.php b/app/Support/Http/Controllers/RenderPartialViews.php index c083f9514e..899dc62d7b 100644 --- a/app/Support/Http/Controllers/RenderPartialViews.php +++ b/app/Support/Http/Controllers/RenderPartialViews.php @@ -34,6 +34,7 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Category\CategoryRepositoryInterface; use FireflyIII\Repositories\Tag\TagRepositoryInterface; +use FireflyIII\Support\Search\OperatorQuerySearch; use Log; use Throwable; @@ -64,9 +65,9 @@ trait RenderPartialViews foreach ($revenue as $otherAccount) { if ( ( - ($otherAccount->name === $account->name) - || - (null !== $account->iban && null !== $otherAccount->iban && $otherAccount->iban === $account->iban) + ($otherAccount->name === $account->name) + || + (null !== $account->iban && null !== $otherAccount->iban && $otherAccount->iban === $account->iban) ) && $otherAccount->id !== $account->id ) { @@ -102,10 +103,10 @@ trait RenderPartialViews /** @var BudgetRepositoryInterface $budgetRepository */ $budgetRepository = app(BudgetRepositoryInterface::class); - $budget = $budgetRepository->findNull((int)$attributes['budgetId']); + $budget = $budgetRepository->findNull((int) $attributes['budgetId']); $accountRepos = app(AccountRepositoryInterface::class); - $account = $accountRepos->findNull((int)$attributes['accountId']); + $account = $accountRepos->findNull((int) $attributes['accountId']); $journals = $popupHelper->balanceForBudget($budget, $account, $attributes); // @codeCoverageIgnoreStart @@ -159,7 +160,7 @@ trait RenderPartialViews /** @var PopupReportInterface $popupHelper */ $popupHelper = app(PopupReportInterface::class); - $budget = $budgetRepository->findNull((int)$attributes['budgetId']); + $budget = $budgetRepository->findNull((int) $attributes['budgetId']); if (null === $budget) { $budget = new Budget; } @@ -191,7 +192,7 @@ trait RenderPartialViews /** @var CategoryRepositoryInterface $categoryRepository */ $categoryRepository = app(CategoryRepositoryInterface::class); - $category = $categoryRepository->findNull((int)$attributes['categoryId']); + $category = $categoryRepository->findNull((int) $attributes['categoryId']); $journals = $popupHelper->byCategory($category, $attributes); if (null === $category) { return 'This is an unknown category. Apologies.'; @@ -247,7 +248,7 @@ trait RenderPartialViews /** @var PopupReportInterface $popupHelper */ $popupHelper = app(PopupReportInterface::class); - $account = $accountRepository->findNull((int)$attributes['accountId']); + $account = $accountRepository->findNull((int) $attributes['accountId']); if (null === $account) { return 'This is an unknown account. Apologies.'; @@ -315,8 +316,20 @@ trait RenderPartialViews */ protected function getCurrentTriggers(Rule $rule): array // get info from object and present. { - $index = 0; - $triggers = []; + // TODO duplicated code. + $operators = config('firefly.search.operators'); + $triggers = []; + foreach ($operators as $key => $operator) { + if ('user_action' !== $key && false === $operator['alias']) { + + $triggers[$key] = (string) trans(sprintf('firefly.rule_trigger_%s_choice', $key)); + } + } + asort($triggers); + + + $index = 0; + $renderedEntries = []; // todo must be repos $currentTriggers = $rule->ruleTriggers()->orderBy('order', 'ASC')->get(); /** @var RuleTrigger $entry */ @@ -324,13 +337,14 @@ trait RenderPartialViews if ('user_action' !== $entry->trigger_type) { $count = ($index + 1); try { - $triggers[] = view( + $renderedEntries[] = view( 'rules.partials.trigger', [ - 'oldTrigger' => $entry->trigger_type, + 'oldTrigger' => OperatorQuerySearch::getRootOperator($entry->trigger_type), 'oldValue' => $entry->trigger_value, 'oldChecked' => $entry->stop_processing, 'count' => $count, + 'triggers' => $triggers, ] )->render(); // @codeCoverageIgnoreStart @@ -343,7 +357,7 @@ trait RenderPartialViews } } - return $triggers; + return $renderedEntries; } /** @@ -360,7 +374,7 @@ trait RenderPartialViews /** @var PopupReportInterface $popupHelper */ $popupHelper = app(PopupReportInterface::class); - $account = $accountRepository->findNull((int)$attributes['accountId']); + $account = $accountRepository->findNull((int) $attributes['accountId']); if (null === $account) { return 'This is an unknown category. Apologies.'; diff --git a/app/Support/Http/Controllers/RuleManagement.php b/app/Support/Http/Controllers/RuleManagement.php index 68ce515290..5f24fd161e 100644 --- a/app/Support/Http/Controllers/RuleManagement.php +++ b/app/Support/Http/Controllers/RuleManagement.php @@ -23,9 +23,9 @@ declare(strict_types=1); namespace FireflyIII\Support\Http\Controllers; -use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Rule\RuleRepositoryInterface; use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface; +use FireflyIII\Support\Search\OperatorQuerySearch; use Illuminate\Http\Request; use Log; use Throwable; @@ -48,21 +48,21 @@ trait RuleManagement $data = [ 'rule_group_id' => $ruleRepository->getFirstRuleGroup()->id, 'stop_processing' => 0, - 'title' => (string)trans('firefly.default_rule_name'), - 'description' => (string)trans('firefly.default_rule_description'), + 'title' => (string) trans('firefly.default_rule_name'), + 'description' => (string) trans('firefly.default_rule_description'), 'trigger' => 'store-journal', 'strict' => true, 'active' => true, 'triggers' => [ [ 'type' => 'description_is', - 'value' => (string)trans('firefly.default_rule_trigger_description'), + 'value' => (string) trans('firefly.default_rule_trigger_description'), 'stop_processing' => false, ], [ 'type' => 'from_account_is', - 'value' => (string)trans('firefly.default_rule_trigger_from_account'), + 'value' => (string) trans('firefly.default_rule_trigger_from_account'), 'stop_processing' => false, ], @@ -71,12 +71,12 @@ trait RuleManagement 'actions' => [ [ 'type' => 'prepend_description', - 'value' => (string)trans('firefly.default_rule_action_prepend'), + 'value' => (string) trans('firefly.default_rule_action_prepend'), 'stop_processing' => false, ], [ 'type' => 'set_category', - 'value' => (string)trans('firefly.default_rule_action_set_category'), + 'value' => (string) trans('firefly.default_rule_action_set_category'), 'stop_processing' => false, ], ], @@ -105,7 +105,7 @@ trait RuleManagement [ 'oldAction' => $oldAction['type'], 'oldValue' => $oldAction['value'], - 'oldChecked' => 1 === (int)($oldAction['stop_processing'] ?? '0'), + 'oldChecked' => 1 === (int) ($oldAction['stop_processing'] ?? '0'), 'count' => $index + 1, ] )->render(); @@ -128,19 +128,31 @@ trait RuleManagement */ protected function getPreviousTriggers(Request $request): array { - $index = 0; - $triggers = []; - $oldInput = $request->old('triggers'); + // TODO duplicated code. + $operators = config('firefly.search.operators'); + $triggers = []; + foreach ($operators as $key => $operator) { + if ('user_action' !== $key && false === $operator['alias']) { + + $triggers[$key] = (string) trans(sprintf('firefly.rule_trigger_%s_choice', $key)); + } + } + asort($triggers); + + $index = 0; + $renderedEntries = []; + $oldInput = $request->old('triggers'); if (is_array($oldInput)) { foreach ($oldInput as $oldTrigger) { try { - $triggers[] = view( + $renderedEntries[] = view( 'rules.partials.trigger', [ - 'oldTrigger' => $oldTrigger['type'], + 'oldTrigger' => OperatorQuerySearch::getRootOperator($oldTrigger['type']), 'oldValue' => $oldTrigger['value'], - 'oldChecked' => 1 === (int)($oldTrigger['stop_processing'] ?? '0'), + 'oldChecked' => 1 === (int) ($oldTrigger['stop_processing'] ?? '0'), 'count' => $index + 1, + 'triggers' => $triggers, ] )->render(); } catch (Throwable $e) { @@ -151,7 +163,7 @@ trait RuleManagement } } - return $triggers; + return $renderedEntries; } /** @@ -163,8 +175,8 @@ trait RuleManagement $repository = app(RuleGroupRepositoryInterface::class); if (0 === $repository->count()) { $data = [ - 'title' => (string)trans('firefly.default_rule_group_name'), - 'description' => (string)trans('firefly.default_rule_group_description'), + 'title' => (string) trans('firefly.default_rule_group_name'), + 'description' => (string) trans('firefly.default_rule_group_description'), 'active' => true, ]; diff --git a/app/Support/Search/OperatorQuerySearch.php b/app/Support/Search/OperatorQuerySearch.php index d7cbe21639..f428e9722d 100644 --- a/app/Support/Search/OperatorQuerySearch.php +++ b/app/Support/Search/OperatorQuerySearch.php @@ -234,7 +234,7 @@ class OperatorQuerySearch implements SearchInterface if ($this->updateCollector($operator, $value)) { $this->operators->push( [ - 'type' => $this->getRootOperator($operator), + 'type' => self::getRootOperator($operator), 'value' => $value, ] ); @@ -256,7 +256,7 @@ class OperatorQuerySearch implements SearchInterface Log::debug(sprintf('updateCollector(%s, %s)', $operator, $value)); // check if alias, replace if necessary: - $operator = $this->getRootOperator($operator); + $operator = self::getRootOperator($operator); switch ($operator) { default: @@ -687,8 +687,9 @@ class OperatorQuerySearch implements SearchInterface /** * @param string $operator * @return string + * @throws FireflyException */ - private function getRootOperator(string $operator): string + public static function getRootOperator(string $operator): string { $config = config(sprintf('firefly.search.operators.%s', $operator)); if (null === $config) {