. */ declare(strict_types=1); namespace FireflyIII\Validation\AutoBudget; use Illuminate\Validation\Validator; /** * Trait ValidatesAutoBudgetRequest */ trait ValidatesAutoBudgetRequest { /** * @param Validator $validator */ protected function validateAutoBudgetAmount(Validator $validator): void { $data = $validator->getData(); $type = $data['auto_budget_type'] ?? ''; $amount = array_key_exists('auto_budget_amount', $data) ? $data['auto_budget_amount'] : null; $period = array_key_exists('auto_budget_period', $data) ? $data['auto_budget_period'] : null; $currencyId = array_key_exists('auto_budget_currency_id', $data) ? (int) $data['auto_budget_currency_id'] : null; $currencyCode = array_key_exists('auto_budget_currency_code', $data) ? $data['auto_budget_currency_code'] : null; if (is_numeric($type)) { $type = (int) $type; } if ('' === $type || 0 === $type) { return; } // basic float check: if (!is_numeric($amount)) { $validator->errors()->add('auto_budget_amount', (string) trans('validation.amount_required_for_auto_budget')); return; } if ('' === $amount) { $validator->errors()->add('auto_budget_amount', (string) trans('validation.amount_required_for_auto_budget')); } if (1 !== bccomp((string) $amount, '0')) { $validator->errors()->add('auto_budget_amount', (string) trans('validation.auto_budget_amount_positive')); } if ('' === $period) { $validator->errors()->add('auto_budget_period', (string) trans('validation.auto_budget_period_mandatory')); } if (null !== $currencyId && null !== $currencyCode && '' === $currencyCode && 0 === $currencyId) { $validator->errors()->add('auto_budget_amount', (string) trans('validation.require_currency_info')); } // too big amount if ((int)$amount > 268435456) { $validator->errors()->add('auto_budget_amount', (string) trans('validation.amount_required_for_auto_budget')); return; } } }