mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-17 02:05:34 +00:00
Fix #4435
This commit is contained in:
@@ -44,15 +44,15 @@ class PiggyBankStoreRequest extends FormRequest
|
||||
public function getAll(): array
|
||||
{
|
||||
return [
|
||||
'name' => $this->string('name'),
|
||||
'account_id' => $this->integer('account_id'),
|
||||
'targetamount' => $this->string('target_amount'),
|
||||
'current_amount' => $this->string('current_amount'),
|
||||
'startdate' => $this->date('start_date'),
|
||||
'targetdate' => $this->date('target_date'),
|
||||
'notes' => $this->nlString('notes'),
|
||||
'object_group_id' => $this->integer('object_group_id'),
|
||||
'object_group' => $this->string('object_group_name'),
|
||||
'name' => $this->string('name'),
|
||||
'account_id' => $this->integer('account_id'),
|
||||
'targetamount' => $this->string('target_amount'),
|
||||
'current_amount' => $this->string('current_amount'),
|
||||
'startdate' => $this->date('start_date'),
|
||||
'targetdate' => $this->date('target_date'),
|
||||
'notes' => $this->nlString('notes'),
|
||||
'object_group_id' => $this->integer('object_group_id'),
|
||||
'object_group_title' => $this->string('object_group_title'),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -64,14 +64,15 @@ class PiggyBankStoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'name' => 'required|between:1,255|uniquePiggyBankForUser',
|
||||
'current_amount' => ['numeric', 'gte:0', 'lte:target_amount'],
|
||||
'account_id' => 'required|numeric|belongsToUser:accounts,id',
|
||||
'object_group_id' => 'numeric|belongsToUser:object_groups,id',
|
||||
'target_amount' => ['numeric', 'gte:0', 'lte:target_amount', 'required'],
|
||||
'start_date' => 'date|nullable',
|
||||
'target_date' => 'date|nullable|after:start_date',
|
||||
'notes' => 'max:65000',
|
||||
'name' => 'required|between:1,255|uniquePiggyBankForUser',
|
||||
'current_amount' => ['numeric', 'gte:0', 'lte:target_amount'],
|
||||
'account_id' => 'required|numeric|belongsToUser:accounts,id',
|
||||
'object_group_id' => 'numeric|belongsToUser:object_groups,id',
|
||||
'object_group_title' => 'between:1,255',
|
||||
'target_amount' => ['numeric', 'gte:0', 'lte:target_amount', 'required'],
|
||||
'start_date' => 'date|nullable',
|
||||
'target_date' => 'date|nullable|after:start_date',
|
||||
'notes' => 'max:65000',
|
||||
];
|
||||
}
|
||||
|
||||
|
@@ -105,7 +105,7 @@ trait ModifiesPiggyBanks
|
||||
$leftOnAccount = $this->leftOnAccount($piggyBank, today(config('app.timezone')));
|
||||
$savedSoFar = (string)$this->getRepetition($piggyBank)->currentamount;
|
||||
$leftToSave = bcsub($piggyBank->targetamount, $savedSoFar);
|
||||
$maxAmount = (string)min(round((float) $leftOnAccount, 12), round((float)$leftToSave, 12));
|
||||
$maxAmount = (string)min(round((float)$leftOnAccount, 12), round((float)$leftToSave, 12));
|
||||
$compare = bccomp($amount, $maxAmount);
|
||||
$result = $compare <= 0;
|
||||
|
||||
@@ -286,11 +286,14 @@ trait ModifiesPiggyBanks
|
||||
public function store(array $data): PiggyBank
|
||||
{
|
||||
$data['order'] = $this->getMaxOrder() + 1;
|
||||
$piggyData = $data;
|
||||
// unset fields just in case.
|
||||
unset($piggyData['object_group_title'], $piggyData['object_group_id'], $piggyData['notes'], $piggyData['current_amount']);
|
||||
try {
|
||||
/** @var PiggyBank $piggyBank */
|
||||
$piggyBank = PiggyBank::create($data);
|
||||
$piggyBank = PiggyBank::create($piggyData);
|
||||
} catch (QueryException $e) {
|
||||
Log::error(sprintf('Could not store piggy bank: %s', $e->getMessage()));
|
||||
Log::error(sprintf('Could not store piggy bank: %s', $e->getMessage()), $piggyData);
|
||||
throw new FireflyException('400005: Could not store new piggy bank.');
|
||||
}
|
||||
|
||||
@@ -303,15 +306,16 @@ trait ModifiesPiggyBanks
|
||||
$repetition->save();
|
||||
}
|
||||
|
||||
$objectGroupTitle = $data['object_group'] ?? '';
|
||||
$objectGroupTitle = $data['object_group_title'] ?? '';
|
||||
if ('' !== $objectGroupTitle) {
|
||||
$objectGroup = $this->findOrCreateObjectGroup($objectGroupTitle);
|
||||
if (null !== $objectGroup) {
|
||||
$piggyBank->objectGroups()->sync([$objectGroup->id]);
|
||||
$piggyBank->save();
|
||||
}
|
||||
|
||||
}
|
||||
// try also with ID:
|
||||
// try also with ID
|
||||
$objectGroupId = (int)($data['object_group_id'] ?? 0);
|
||||
if (0 !== $objectGroupId) {
|
||||
$objectGroup = $this->findObjectGroupById($objectGroupId);
|
||||
|
@@ -72,7 +72,7 @@ Route::group(
|
||||
);
|
||||
|
||||
|
||||
|
||||
// TODO VERIFY API DOCS
|
||||
Route::group(
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'accounts',
|
||||
'as' => 'api.v1.accounts.',],
|
||||
@@ -91,6 +91,7 @@ Route::group(
|
||||
}
|
||||
);
|
||||
|
||||
// TODO VERIFY API DOCS
|
||||
Route::group(
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers\Autocomplete', 'prefix' => 'autocomplete',
|
||||
'as' => 'api.v1.autocomplete.',],
|
||||
@@ -112,6 +113,7 @@ Route::group(
|
||||
}
|
||||
);
|
||||
|
||||
// TODO VERIFY API DOCS
|
||||
Route::group(
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'groups',
|
||||
'as' => 'api.v1.object-groups.',],
|
||||
@@ -127,6 +129,7 @@ Route::group(
|
||||
}
|
||||
);
|
||||
|
||||
// TODO VERIFY API DOCS
|
||||
Route::group(
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'attachments',
|
||||
'as' => 'api.v1.attachments.',],
|
||||
@@ -143,6 +146,7 @@ Route::group(
|
||||
}
|
||||
);
|
||||
|
||||
// TODO VERIFY API DOCS
|
||||
Route::group(
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'available_budgets',
|
||||
'as' => 'api.v1.available_budgets.',],
|
||||
@@ -157,6 +161,7 @@ Route::group(
|
||||
}
|
||||
);
|
||||
|
||||
// TODO VERIFY API DOCS
|
||||
Route::group(
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'bills',
|
||||
'as' => 'api.v1.bills.',],
|
||||
@@ -175,6 +180,7 @@ Route::group(
|
||||
}
|
||||
);
|
||||
|
||||
// TODO VERIFY API DOCS
|
||||
Route::group(
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'budgets/limits',
|
||||
'as' => 'api.v1.budget_limits.',],
|
||||
@@ -191,6 +197,7 @@ Route::group(
|
||||
}
|
||||
);
|
||||
|
||||
// TODO VERIFY API DOCS
|
||||
Route::group(
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'budgets',
|
||||
'as' => 'api.v1.budgets.',],
|
||||
@@ -210,6 +217,7 @@ Route::group(
|
||||
}
|
||||
);
|
||||
|
||||
// TODO VERIFY API DOCS
|
||||
Route::group(
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'categories',
|
||||
'as' => 'api.v1.categories.',],
|
||||
@@ -232,6 +240,7 @@ Route::group(
|
||||
*/
|
||||
|
||||
// Accounts
|
||||
// TODO VERIFY API DOCS
|
||||
Route::group(
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers\Chart', 'prefix' => 'chart/account',
|
||||
'as' => 'api.v1.chart.account.',],
|
||||
@@ -243,6 +252,7 @@ Route::group(
|
||||
);
|
||||
|
||||
// Available budgets
|
||||
// TODO VERIFY API DOCS
|
||||
Route::group(
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers\Chart', 'prefix' => 'chart/ab',
|
||||
'as' => 'api.v1.chart.ab.',],
|
||||
@@ -254,6 +264,7 @@ Route::group(
|
||||
);
|
||||
|
||||
// Budgets
|
||||
// TODO VERIFY API DOCS
|
||||
Route::group(
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers\Chart', 'prefix' => 'chart/budget',
|
||||
'as' => 'api.v1.chart.budget.',],
|
||||
@@ -315,20 +326,21 @@ Route::group(
|
||||
}
|
||||
);
|
||||
|
||||
// TODO VERIFY API DOCS
|
||||
Route::group(
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'piggy_banks',
|
||||
['namespace' => 'FireflyIII\Api\V1\Controllers\Models\PiggyBank', 'prefix' => 'piggy_banks',
|
||||
'as' => 'api.v1.piggy_banks.',],
|
||||
static function () {
|
||||
|
||||
// Piggy Bank API routes:
|
||||
Route::get('', ['uses' => 'PiggyBankController@index', 'as' => 'index']);
|
||||
Route::post('', ['uses' => 'PiggyBankController@store', 'as' => 'store']);
|
||||
Route::get('{piggyBank}', ['uses' => 'PiggyBankController@show', 'as' => 'show']);
|
||||
Route::put('{piggyBank}', ['uses' => 'PiggyBankController@update', 'as' => 'update']);
|
||||
Route::delete('{piggyBank}', ['uses' => 'PiggyBankController@delete', 'as' => 'delete']);
|
||||
Route::get('', ['uses' => 'ShowController@index', 'as' => 'index']);
|
||||
Route::post('', ['uses' => 'StoreController@store', 'as' => 'store']);
|
||||
Route::get('{piggyBank}', ['uses' => 'ShowController@show', 'as' => 'show']);
|
||||
Route::put('{piggyBank}', ['uses' => 'UpdateController@update', 'as' => 'update']);
|
||||
Route::delete('{piggyBank}', ['uses' => 'DestroyController@destroy', 'as' => 'delete']);
|
||||
|
||||
Route::get('{piggyBank}/events', ['uses' => 'PiggyBankController@piggyBankEvents', 'as' => 'events']);
|
||||
Route::get('{piggyBank}/attachments', ['uses' => 'PiggyBankController@attachments', 'as' => 'attachments']);
|
||||
Route::get('{piggyBank}/events', ['uses' => 'ListController@piggyBankEvents', 'as' => 'events']);
|
||||
Route::get('{piggyBank}/attachments', ['uses' => 'ListController@attachments', 'as' => 'attachments']);
|
||||
}
|
||||
);
|
||||
|
||||
|
Reference in New Issue
Block a user