mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Fix for #1781
This commit is contained in:
parent
329b34f7d1
commit
db7e3d725e
@ -75,32 +75,31 @@ class RuleFormRequest extends Request
|
|||||||
$validTriggers = array_keys(config('firefly.rule-triggers'));
|
$validTriggers = array_keys(config('firefly.rule-triggers'));
|
||||||
$validActions = array_keys(config('firefly.rule-actions'));
|
$validActions = array_keys(config('firefly.rule-actions'));
|
||||||
|
|
||||||
// some actions require text:
|
// some actions require text (aka context):
|
||||||
$contextActions = implode(',', config('firefly.rule-actions-text'));
|
$contextActions = implode(',', config('firefly.context-rule-actions'));
|
||||||
|
|
||||||
$titleRule = 'required|between:1,100|uniqueObjectForUser:rules,title';
|
// some triggers require text (aka context):
|
||||||
/** @var Rule $rule */
|
$contextTriggers = implode(',', config('firefly.context-rule-triggers'));
|
||||||
$rule = $this->route()->parameter('rule');
|
|
||||||
|
|
||||||
if (null !== $rule) {
|
// initial set of rules:
|
||||||
$titleRule = 'required|between:1,100|uniqueObjectForUser:rules,title,' . $rule->id;
|
|
||||||
}
|
|
||||||
$rules = [
|
$rules = [
|
||||||
'title' => $titleRule,
|
'title' => 'required|between:1,100|uniqueObjectForUser:rules,title',
|
||||||
'description' => 'between:1,5000|nullable',
|
'description' => 'between:1,5000|nullable',
|
||||||
'stop_processing' => 'boolean',
|
'stop_processing' => 'boolean',
|
||||||
'rule_group_id' => 'required|belongsToUser:rule_groups',
|
'rule_group_id' => 'required|belongsToUser:rule_groups',
|
||||||
'trigger' => 'required|in:store-journal,update-journal',
|
'trigger' => 'required|in:store-journal,update-journal',
|
||||||
'rule_triggers.*.name' => 'required|in:' . implode(',', $validTriggers),
|
'rule_triggers.*.name' => 'required|in:' . implode(',', $validTriggers),
|
||||||
'rule_triggers.*.value' => 'required|min:1|ruleTriggerValue',
|
'rule_triggers.*.value' => sprintf('required_if:rule_triggers.*.name,%s|min:1|ruleTriggerValue', $contextTriggers),
|
||||||
'rule-actions.*.name' => 'required|in:' . implode(',', $validActions),
|
'rule-actions.*.name' => 'required|in:' . implode(',', $validActions),
|
||||||
|
'rule_actions.*.value' => sprintf('required_if:rule_actions.*.name,%s|min:1|ruleActionValue', $contextActions),
|
||||||
'strict' => 'in:0,1',
|
'strict' => 'in:0,1',
|
||||||
];
|
];
|
||||||
// since Laravel does not support this stuff yet, here's a trick.
|
|
||||||
for ($i = 0; $i < 10; ++$i) {
|
/** @var Rule $rule */
|
||||||
$key = sprintf('rule_actions.%d.value', $i);
|
$rule = $this->route()->parameter('rule');
|
||||||
$rule = sprintf('required-if:rule_actions.%d.name,%s|ruleActionValue', $i, $contextActions);
|
|
||||||
$rules[$key] = $rule;
|
if (null !== $rule) {
|
||||||
|
$rules['title'] = 'required|between:1,100|uniqueObjectForUser:rules,title,' . $rule->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $rules;
|
return $rules;
|
||||||
|
@ -313,10 +313,8 @@ class FireflyValidator extends Validator
|
|||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function validateRuleTriggerValue(string $attribute, string $value): bool
|
public function validateRuleTriggerValue(string $attribute, string $value = null): bool
|
||||||
{
|
{
|
||||||
//
|
|
||||||
|
|
||||||
// first, get the index from this string:
|
// first, get the index from this string:
|
||||||
$parts = explode('.', $attribute);
|
$parts = explode('.', $attribute);
|
||||||
$index = (int)($parts[1] ?? '0');
|
$index = (int)($parts[1] ?? '0');
|
||||||
|
@ -375,23 +375,59 @@ return [
|
|||||||
'convert_deposit' => ConvertToDeposit::class,
|
'convert_deposit' => ConvertToDeposit::class,
|
||||||
'convert_transfer' => ConvertToTransfer::class,
|
'convert_transfer' => ConvertToTransfer::class,
|
||||||
],
|
],
|
||||||
'rule-actions-text' => [
|
'context-rule-actions' => [
|
||||||
'set_category',
|
'set_category',
|
||||||
'set_budget',
|
'set_budget',
|
||||||
'add_tag',
|
'add_tag',
|
||||||
'remove_tag',
|
'remove_tag',
|
||||||
'link_to_bill',
|
|
||||||
'set_description',
|
'set_description',
|
||||||
'append_description',
|
'append_description',
|
||||||
'prepend_description',
|
'prepend_description',
|
||||||
|
'set_source_account',
|
||||||
|
'set_destination_account',
|
||||||
|
'set_notes',
|
||||||
|
'append_notes',
|
||||||
|
'prepend_notes',
|
||||||
|
'link_to_bill',
|
||||||
|
'convert_withdrawal',
|
||||||
|
'convert_deposit',
|
||||||
|
'convert_transfer',
|
||||||
],
|
],
|
||||||
'test-triggers' => [
|
'context-rule-triggers' => [
|
||||||
|
'from_account_starts',
|
||||||
|
'from_account_ends',
|
||||||
|
'from_account_is',
|
||||||
|
'from_account_contains',
|
||||||
|
'to_account_starts',
|
||||||
|
'to_account_ends',
|
||||||
|
'to_account_is',
|
||||||
|
'to_account_contains',
|
||||||
|
'amount_less',
|
||||||
|
'amount_exactly',
|
||||||
|
'amount_more',
|
||||||
|
'description_starts',
|
||||||
|
'description_ends',
|
||||||
|
'description_contains',
|
||||||
|
'description_is',
|
||||||
|
'transaction_type',
|
||||||
|
'category_is',
|
||||||
|
'budget_is',
|
||||||
|
'tag_is',
|
||||||
|
'currency_is',
|
||||||
|
'notes_contain',
|
||||||
|
'notes_start',
|
||||||
|
'notes_end',
|
||||||
|
'notes_are',
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
'test-triggers' => [
|
||||||
'limit' => 10,
|
'limit' => 10,
|
||||||
'range' => 200,
|
'range' => 200,
|
||||||
],
|
],
|
||||||
'default_currency' => 'EUR',
|
'default_currency' => 'EUR',
|
||||||
'default_language' => 'en_US',
|
'default_language' => 'en_US',
|
||||||
'search_modifiers' => ['amount_is', 'amount', 'amount_max', 'amount_min', 'amount_less', 'amount_more', 'source', 'destination', 'category',
|
'search_modifiers' => ['amount_is', 'amount', 'amount_max', 'amount_min', 'amount_less', 'amount_more', 'source', 'destination', 'category',
|
||||||
'budget', 'bill', 'type', 'date', 'date_before', 'date_after', 'on', 'before', 'after'],
|
'budget', 'bill', 'type', 'date', 'date_before', 'date_after', 'on', 'before', 'after'],
|
||||||
// tag notes has_attachments
|
// tag notes has_attachments
|
||||||
];
|
];
|
||||||
|
Loading…
Reference in New Issue
Block a user