can edit, delete and see in api autobudget

This commit is contained in:
James Cole
2020-03-14 07:01:31 +01:00
parent 2ece754927
commit 309633069c
14 changed files with 185 additions and 53 deletions

View File

@@ -22,7 +22,6 @@ declare(strict_types=1);
namespace FireflyIII\Http\Requests;
use FireflyIII\AutoBudget;
use Illuminate\Validation\Validator;
/**
@@ -87,30 +86,9 @@ class BudgetFormStoreRequest extends Request
$validator->after(
function (Validator $validator) {
// validate all account info
$this->validateAmount($validator);
$this->validateAutoBudgetAmount($validator);
}
);
}
/**
* @param Validator $validator
*/
private function validateAmount(Validator $validator): void
{
$data = $validator->getData();
$option = (int)$data['auto_budget_option'];
$amount = $data['auto_budget_amount'] ?? '';
switch ($option) {
case AutoBudget::AUTO_BUDGET_RESET:
case AutoBudget::AUTO_BUDGET_ROLLOVER:
// basic float check:
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'));
}
break;
}
}
}

View File

@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\Http\Requests;
use FireflyIII\Models\Budget;
use Illuminate\Validation\Validator;
/**
* @codeCoverageIgnore
@@ -48,8 +49,12 @@ class BudgetFormUpdateRequest extends Request
public function getBudgetData(): array
{
return [
'name' => $this->string('name'),
'active' => $this->boolean('active'),
'name' => $this->string('name'),
'active' => $this->boolean('active'),
'auto_budget_option' => $this->integer('auto_budget_option'),
'transaction_currency_id' => $this->integer('transaction_currency_id'),
'auto_budget_amount' => $this->string('auto_budget_amount'),
'auto_budget_period' => $this->string('auto_budget_period'),
];
}
@@ -70,8 +75,29 @@ class BudgetFormUpdateRequest extends Request
}
return [
'name' => $nameRule,
'active' => 'numeric|between:0,1',
'name' => $nameRule,
'active' => 'numeric|between:0,1',
'auto_budget_option' => 'numeric|between:0,2',
'transaction_currency_id' => 'required|exists:transaction_currencies,id',
'auto_budget_amount' => 'min:0|max:1000000000',
'auto_budget_period' => 'in:daily,weekly,monthly,quarterly,half_year,yearly',
];
}
/**
* Configure the validator instance with special rules for after the basic validation rules.
*
* @param Validator $validator
*
* @return void
*/
public function withValidator(Validator $validator): void
{
$validator->after(
function (Validator $validator) {
// validate all account info
$this->validateAutoBudgetAmount($validator);
}
);
}
}

View File

@@ -25,7 +25,9 @@ namespace FireflyIII\Http\Requests;
use Carbon\Carbon;
use Carbon\Exceptions\InvalidDateException;
use Exception;
use FireflyIII\Models\AutoBudget;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Validator;
use Log;
/**
@@ -385,4 +387,26 @@ class Request extends FormRequest
return $data;
}
/**
* @param Validator $validator
*/
protected function validateAutoBudgetAmount(Validator $validator): void
{
$data = $validator->getData();
$option = (int)$data['auto_budget_option'];
$amount = $data['auto_budget_amount'] ?? '';
switch ($option) {
case AutoBudget::AUTO_BUDGET_RESET:
case AutoBudget::AUTO_BUDGET_ROLLOVER:
// basic float check:
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'));
}
break;
}
}
}