. */ declare(strict_types=1); namespace FireflyIII\Support\Http\Controllers; use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface; use FireflyIII\Support\Search\OperatorQuerySearch; use Illuminate\Http\Request; use Log; use Throwable; /** * Trait RuleManagement * */ trait RuleManagement { /** * @param Request $request * * @return array * @codeCoverageIgnore */ protected function getPreviousActions(Request $request): array { $index = 0; $triggers = []; $oldInput = $request->old('actions'); if (is_array($oldInput)) { foreach ($oldInput as $oldAction) { try { $triggers[] = view( 'rules.partials.action', [ 'oldAction' => $oldAction['type'], 'oldValue' => $oldAction['value'], 'oldChecked' => 1 === (int) ($oldAction['stop_processing'] ?? '0'), 'count' => $index + 1, ] )->render(); } catch (Throwable $e) { // @phpstan-ignore-line Log::debug(sprintf('Throwable was thrown in getPreviousActions(): %s', $e->getMessage())); Log::error($e->getTraceAsString()); } $index++; } } return $triggers; } /** * @param Request $request * * @return array * @codeCoverageIgnore */ protected function getPreviousTriggers(Request $request): array { // See reference nr. 34 $operators = config('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 { $renderedEntries[] = view( 'rules.partials.trigger', [ 'oldTrigger' => OperatorQuerySearch::getRootOperator($oldTrigger['type']), 'oldValue' => $oldTrigger['value'], 'oldChecked' => 1 === (int) ($oldTrigger['stop_processing'] ?? '0'), 'oldProhibited' => 1 === (int) ($oldTrigger['prohibited'] ?? '0'), 'count' => $index + 1, 'triggers' => $triggers, ] )->render(); } catch (Throwable $e) { // @phpstan-ignore-line Log::debug(sprintf('Throwable was thrown in getPreviousTriggers(): %s', $e->getMessage())); Log::error($e->getTraceAsString()); } $index++; } } return $renderedEntries; } /** * @param array $submittedOperators * * @return array */ protected function parseFromOperators(array $submittedOperators): array { // See reference nr. 35 $operators = config('search.operators'); $renderedEntries = []; $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; foreach ($submittedOperators as $operator) { try { $renderedEntries[] = view( 'rules.partials.trigger', [ 'oldTrigger' => OperatorQuerySearch::getRootOperator($operator['type']), 'oldValue' => $operator['value'], 'oldChecked' => false, 'count' => $index + 1, 'triggers' => $triggers, ] )->render(); } catch (Throwable $e) { // @phpstan-ignore-line Log::debug(sprintf('Throwable was thrown in getPreviousTriggers(): %s', $e->getMessage())); Log::error($e->getTraceAsString()); } $index++; } return $renderedEntries; } /** * */ private function createDefaultRuleGroup(): void { /** @var RuleGroupRepositoryInterface $repository */ $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'), 'active' => true, ]; $repository->store($data); } } }