mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-20 11:48:27 -06:00
Add validation for at least one active action.
This commit is contained in:
parent
b9ac43e86d
commit
8dd7d9ba26
@ -153,12 +153,14 @@ class StoreRequest extends FormRequest
|
|||||||
function (Validator $validator) {
|
function (Validator $validator) {
|
||||||
$this->atLeastOneTrigger($validator);
|
$this->atLeastOneTrigger($validator);
|
||||||
$this->atLeastOneAction($validator);
|
$this->atLeastOneAction($validator);
|
||||||
|
$this->atLeastOneActiveTrigger($validator);
|
||||||
|
$this->atLeastOneActiveAction($validator);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds an error to the validator when there are no repetitions in the array of data.
|
* Adds an error to the validator when there are no triggers in the array of data.
|
||||||
*
|
*
|
||||||
* @param Validator $validator
|
* @param Validator $validator
|
||||||
*/
|
*/
|
||||||
@ -172,6 +174,64 @@ class StoreRequest extends FormRequest
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds an error to the validator when there are no ACTIVE triggers in the array of data.
|
||||||
|
*
|
||||||
|
* @param Validator $validator
|
||||||
|
*/
|
||||||
|
protected function atLeastOneActiveTrigger(Validator $validator): void
|
||||||
|
{
|
||||||
|
$data = $validator->getData();
|
||||||
|
$triggers = $data['triggers'] ?? [];
|
||||||
|
// need at least one trigger
|
||||||
|
if (!is_countable($triggers) || empty($triggers)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$allInactive = true;
|
||||||
|
$inactiveIndex = 0;
|
||||||
|
foreach ($triggers as $index => $trigger) {
|
||||||
|
$active = array_key_exists('active', $trigger) ? $trigger['active'] : true; // assume true
|
||||||
|
if (true === $active) {
|
||||||
|
$allInactive = false;
|
||||||
|
}
|
||||||
|
if (false === $active) {
|
||||||
|
$inactiveIndex = $index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (true === $allInactive) {
|
||||||
|
$validator->errors()->add(sprintf('triggers.%d.active', $inactiveIndex), (string)trans('validation.at_least_one_active_trigger'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds an error to the validator when there are no ACTIVE actions in the array of data.
|
||||||
|
*
|
||||||
|
* @param Validator $validator
|
||||||
|
*/
|
||||||
|
protected function atLeastOneActiveAction(Validator $validator): void
|
||||||
|
{
|
||||||
|
$data = $validator->getData();
|
||||||
|
$actions = $data['actions'] ?? [];
|
||||||
|
// need at least one trigger
|
||||||
|
if (!is_countable($actions) || empty($actions)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$allInactive = true;
|
||||||
|
$inactiveIndex = 0;
|
||||||
|
foreach ($actions as $index => $action) {
|
||||||
|
$active = array_key_exists('active', $action) ? $action['active'] : true; // assume true
|
||||||
|
if (true === $active) {
|
||||||
|
$allInactive = false;
|
||||||
|
}
|
||||||
|
if (false === $active) {
|
||||||
|
$inactiveIndex = $index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (true === $allInactive) {
|
||||||
|
$validator->errors()->add(sprintf('actions.%d.active', $inactiveIndex), (string)trans('validation.at_least_one_active_action'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds an error to the validator when there are no repetitions in the array of data.
|
* Adds an error to the validator when there are no repetitions in the array of data.
|
||||||
*
|
*
|
||||||
|
@ -61,7 +61,9 @@ return [
|
|||||||
'accepted' => 'The :attribute must be accepted.',
|
'accepted' => 'The :attribute must be accepted.',
|
||||||
'bic' => 'This is not a valid BIC.',
|
'bic' => 'This is not a valid BIC.',
|
||||||
'at_least_one_trigger' => 'Rule must have at least one trigger.',
|
'at_least_one_trigger' => 'Rule must have at least one trigger.',
|
||||||
|
'at_least_one_active_trigger' => 'Rule must have at least one active trigger.',
|
||||||
'at_least_one_action' => 'Rule must have at least one action.',
|
'at_least_one_action' => 'Rule must have at least one action.',
|
||||||
|
'at_least_one_active_action' => 'Rule must have at least one active action.',
|
||||||
'base64' => 'This is not valid base64 encoded data.',
|
'base64' => 'This is not valid base64 encoded data.',
|
||||||
'model_id_invalid' => 'The given ID seems invalid for this model.',
|
'model_id_invalid' => 'The given ID seems invalid for this model.',
|
||||||
'less' => ':attribute must be less than 10,000,000',
|
'less' => ':attribute must be less than 10,000,000',
|
||||||
|
Loading…
Reference in New Issue
Block a user