From 2b25631611ef923203e67425124472ce4af07d83 Mon Sep 17 00:00:00 2001 From: James Cole Date: Fri, 23 Apr 2021 06:03:06 +0200 Subject: [PATCH] Fix budget API call --- app/Api/V1/Requests/Models/Budget/StoreRequest.php | 4 ++-- app/Repositories/Budget/BudgetRepository.php | 2 +- app/Validation/AutoBudget/ValidatesAutoBudgetRequest.php | 9 +++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/Api/V1/Requests/Models/Budget/StoreRequest.php b/app/Api/V1/Requests/Models/Budget/StoreRequest.php index ecaa8f28b8..1594542073 100644 --- a/app/Api/V1/Requests/Models/Budget/StoreRequest.php +++ b/app/Api/V1/Requests/Models/Budget/StoreRequest.php @@ -76,8 +76,8 @@ class StoreRequest extends FormRequest 'currency_code' => 'exists:transaction_currencies,code', // auto budget info 'auto_budget_type' => 'in:reset,rollover,none', - 'auto_budget_amount' => 'min:0|max:1000000000', - 'auto_budget_period' => 'in:daily,weekly,monthly,quarterly,half_year,yearly', + 'auto_budget_amount' => 'numeric|min:0|max:1000000000|required_if:auto_budget_type,reset|required_if:auto_budget_type,rollover', + 'auto_budget_period' => 'in:daily,weekly,monthly,quarterly,half_year,yearly|required_if:auto_budget_type,reset|required_if:auto_budget_type,rollover', ]; } diff --git a/app/Repositories/Budget/BudgetRepository.php b/app/Repositories/Budget/BudgetRepository.php index a93de3f86e..b296995edd 100644 --- a/app/Repositories/Budget/BudgetRepository.php +++ b/app/Repositories/Budget/BudgetRepository.php @@ -328,7 +328,7 @@ class BudgetRepository implements BudgetRepositoryInterface Log::error($e->getTraceAsString()); throw new FireflyException('400002: Could not store budget.', 0, $e); } - if (!array_key_exists('auto_budget_type', $data)) { + if (!array_key_exists('auto_budget_type', $data) || !array_key_exists('auto_budget_amount', $data) || !array_key_exists('auto_budget_period', $data)) { return $newBudget; } $type = $data['auto_budget_type']; diff --git a/app/Validation/AutoBudget/ValidatesAutoBudgetRequest.php b/app/Validation/AutoBudget/ValidatesAutoBudgetRequest.php index 606bd9bacf..8ad87b7e61 100644 --- a/app/Validation/AutoBudget/ValidatesAutoBudgetRequest.php +++ b/app/Validation/AutoBudget/ValidatesAutoBudgetRequest.php @@ -48,16 +48,21 @@ trait ValidatesAutoBudgetRequest 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 (null !== $amount && 1 !== bccomp((string)$amount, '0')) { + 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 !== $amount && null !== $currencyId && null !== $currencyCode && '' === $currencyCode && 0 === $currencyId) { + if (null !== $currencyId && null !== $currencyCode && '' === $currencyCode && 0 === $currencyId) { $validator->errors()->add('auto_budget_amount', (string)trans('validation.require_currency_info')); } }