mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-19 10:53:37 +00:00
Fix #4435
This commit is contained in:
@@ -52,7 +52,7 @@ class PiggyBankStoreRequest extends FormRequest
|
|||||||
'targetdate' => $this->date('target_date'),
|
'targetdate' => $this->date('target_date'),
|
||||||
'notes' => $this->nlString('notes'),
|
'notes' => $this->nlString('notes'),
|
||||||
'object_group_id' => $this->integer('object_group_id'),
|
'object_group_id' => $this->integer('object_group_id'),
|
||||||
'object_group' => $this->string('object_group_name'),
|
'object_group_title' => $this->string('object_group_title'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,6 +68,7 @@ class PiggyBankStoreRequest extends FormRequest
|
|||||||
'current_amount' => ['numeric', 'gte:0', 'lte:target_amount'],
|
'current_amount' => ['numeric', 'gte:0', 'lte:target_amount'],
|
||||||
'account_id' => 'required|numeric|belongsToUser:accounts,id',
|
'account_id' => 'required|numeric|belongsToUser:accounts,id',
|
||||||
'object_group_id' => 'numeric|belongsToUser:object_groups,id',
|
'object_group_id' => 'numeric|belongsToUser:object_groups,id',
|
||||||
|
'object_group_title' => 'between:1,255',
|
||||||
'target_amount' => ['numeric', 'gte:0', 'lte:target_amount', 'required'],
|
'target_amount' => ['numeric', 'gte:0', 'lte:target_amount', 'required'],
|
||||||
'start_date' => 'date|nullable',
|
'start_date' => 'date|nullable',
|
||||||
'target_date' => 'date|nullable|after:start_date',
|
'target_date' => 'date|nullable|after:start_date',
|
||||||
|
@@ -286,11 +286,14 @@ trait ModifiesPiggyBanks
|
|||||||
public function store(array $data): PiggyBank
|
public function store(array $data): PiggyBank
|
||||||
{
|
{
|
||||||
$data['order'] = $this->getMaxOrder() + 1;
|
$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 {
|
try {
|
||||||
/** @var PiggyBank $piggyBank */
|
/** @var PiggyBank $piggyBank */
|
||||||
$piggyBank = PiggyBank::create($data);
|
$piggyBank = PiggyBank::create($piggyData);
|
||||||
} catch (QueryException $e) {
|
} 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.');
|
throw new FireflyException('400005: Could not store new piggy bank.');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -303,15 +306,16 @@ trait ModifiesPiggyBanks
|
|||||||
$repetition->save();
|
$repetition->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
$objectGroupTitle = $data['object_group'] ?? '';
|
$objectGroupTitle = $data['object_group_title'] ?? '';
|
||||||
if ('' !== $objectGroupTitle) {
|
if ('' !== $objectGroupTitle) {
|
||||||
$objectGroup = $this->findOrCreateObjectGroup($objectGroupTitle);
|
$objectGroup = $this->findOrCreateObjectGroup($objectGroupTitle);
|
||||||
if (null !== $objectGroup) {
|
if (null !== $objectGroup) {
|
||||||
$piggyBank->objectGroups()->sync([$objectGroup->id]);
|
$piggyBank->objectGroups()->sync([$objectGroup->id]);
|
||||||
$piggyBank->save();
|
$piggyBank->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// try also with ID:
|
// try also with ID
|
||||||
$objectGroupId = (int)($data['object_group_id'] ?? 0);
|
$objectGroupId = (int)($data['object_group_id'] ?? 0);
|
||||||
if (0 !== $objectGroupId) {
|
if (0 !== $objectGroupId) {
|
||||||
$objectGroup = $this->findObjectGroupById($objectGroupId);
|
$objectGroup = $this->findObjectGroupById($objectGroupId);
|
||||||
|
@@ -72,7 +72,7 @@ Route::group(
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// TODO VERIFY API DOCS
|
||||||
Route::group(
|
Route::group(
|
||||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'accounts',
|
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'accounts',
|
||||||
'as' => 'api.v1.accounts.',],
|
'as' => 'api.v1.accounts.',],
|
||||||
@@ -91,6 +91,7 @@ Route::group(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// TODO VERIFY API DOCS
|
||||||
Route::group(
|
Route::group(
|
||||||
['namespace' => 'FireflyIII\Api\V1\Controllers\Autocomplete', 'prefix' => 'autocomplete',
|
['namespace' => 'FireflyIII\Api\V1\Controllers\Autocomplete', 'prefix' => 'autocomplete',
|
||||||
'as' => 'api.v1.autocomplete.',],
|
'as' => 'api.v1.autocomplete.',],
|
||||||
@@ -112,6 +113,7 @@ Route::group(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// TODO VERIFY API DOCS
|
||||||
Route::group(
|
Route::group(
|
||||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'groups',
|
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'groups',
|
||||||
'as' => 'api.v1.object-groups.',],
|
'as' => 'api.v1.object-groups.',],
|
||||||
@@ -127,6 +129,7 @@ Route::group(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// TODO VERIFY API DOCS
|
||||||
Route::group(
|
Route::group(
|
||||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'attachments',
|
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'attachments',
|
||||||
'as' => 'api.v1.attachments.',],
|
'as' => 'api.v1.attachments.',],
|
||||||
@@ -143,6 +146,7 @@ Route::group(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// TODO VERIFY API DOCS
|
||||||
Route::group(
|
Route::group(
|
||||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'available_budgets',
|
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'available_budgets',
|
||||||
'as' => 'api.v1.available_budgets.',],
|
'as' => 'api.v1.available_budgets.',],
|
||||||
@@ -157,6 +161,7 @@ Route::group(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// TODO VERIFY API DOCS
|
||||||
Route::group(
|
Route::group(
|
||||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'bills',
|
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'bills',
|
||||||
'as' => 'api.v1.bills.',],
|
'as' => 'api.v1.bills.',],
|
||||||
@@ -175,6 +180,7 @@ Route::group(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// TODO VERIFY API DOCS
|
||||||
Route::group(
|
Route::group(
|
||||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'budgets/limits',
|
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'budgets/limits',
|
||||||
'as' => 'api.v1.budget_limits.',],
|
'as' => 'api.v1.budget_limits.',],
|
||||||
@@ -191,6 +197,7 @@ Route::group(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// TODO VERIFY API DOCS
|
||||||
Route::group(
|
Route::group(
|
||||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'budgets',
|
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'budgets',
|
||||||
'as' => 'api.v1.budgets.',],
|
'as' => 'api.v1.budgets.',],
|
||||||
@@ -210,6 +217,7 @@ Route::group(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// TODO VERIFY API DOCS
|
||||||
Route::group(
|
Route::group(
|
||||||
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'categories',
|
['namespace' => 'FireflyIII\Api\V1\Controllers', 'prefix' => 'categories',
|
||||||
'as' => 'api.v1.categories.',],
|
'as' => 'api.v1.categories.',],
|
||||||
@@ -232,6 +240,7 @@ Route::group(
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// Accounts
|
// Accounts
|
||||||
|
// TODO VERIFY API DOCS
|
||||||
Route::group(
|
Route::group(
|
||||||
['namespace' => 'FireflyIII\Api\V1\Controllers\Chart', 'prefix' => 'chart/account',
|
['namespace' => 'FireflyIII\Api\V1\Controllers\Chart', 'prefix' => 'chart/account',
|
||||||
'as' => 'api.v1.chart.account.',],
|
'as' => 'api.v1.chart.account.',],
|
||||||
@@ -243,6 +252,7 @@ Route::group(
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Available budgets
|
// Available budgets
|
||||||
|
// TODO VERIFY API DOCS
|
||||||
Route::group(
|
Route::group(
|
||||||
['namespace' => 'FireflyIII\Api\V1\Controllers\Chart', 'prefix' => 'chart/ab',
|
['namespace' => 'FireflyIII\Api\V1\Controllers\Chart', 'prefix' => 'chart/ab',
|
||||||
'as' => 'api.v1.chart.ab.',],
|
'as' => 'api.v1.chart.ab.',],
|
||||||
@@ -254,6 +264,7 @@ Route::group(
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Budgets
|
// Budgets
|
||||||
|
// TODO VERIFY API DOCS
|
||||||
Route::group(
|
Route::group(
|
||||||
['namespace' => 'FireflyIII\Api\V1\Controllers\Chart', 'prefix' => 'chart/budget',
|
['namespace' => 'FireflyIII\Api\V1\Controllers\Chart', 'prefix' => 'chart/budget',
|
||||||
'as' => 'api.v1.chart.budget.',],
|
'as' => 'api.v1.chart.budget.',],
|
||||||
@@ -315,20 +326,21 @@ Route::group(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// TODO VERIFY API DOCS
|
||||||
Route::group(
|
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.',],
|
'as' => 'api.v1.piggy_banks.',],
|
||||||
static function () {
|
static function () {
|
||||||
|
|
||||||
// Piggy Bank API routes:
|
// Piggy Bank API routes:
|
||||||
Route::get('', ['uses' => 'PiggyBankController@index', 'as' => 'index']);
|
Route::get('', ['uses' => 'ShowController@index', 'as' => 'index']);
|
||||||
Route::post('', ['uses' => 'PiggyBankController@store', 'as' => 'store']);
|
Route::post('', ['uses' => 'StoreController@store', 'as' => 'store']);
|
||||||
Route::get('{piggyBank}', ['uses' => 'PiggyBankController@show', 'as' => 'show']);
|
Route::get('{piggyBank}', ['uses' => 'ShowController@show', 'as' => 'show']);
|
||||||
Route::put('{piggyBank}', ['uses' => 'PiggyBankController@update', 'as' => 'update']);
|
Route::put('{piggyBank}', ['uses' => 'UpdateController@update', 'as' => 'update']);
|
||||||
Route::delete('{piggyBank}', ['uses' => 'PiggyBankController@delete', 'as' => 'delete']);
|
Route::delete('{piggyBank}', ['uses' => 'DestroyController@destroy', 'as' => 'delete']);
|
||||||
|
|
||||||
Route::get('{piggyBank}/events', ['uses' => 'PiggyBankController@piggyBankEvents', 'as' => 'events']);
|
Route::get('{piggyBank}/events', ['uses' => 'ListController@piggyBankEvents', 'as' => 'events']);
|
||||||
Route::get('{piggyBank}/attachments', ['uses' => 'PiggyBankController@attachments', 'as' => 'attachments']);
|
Route::get('{piggyBank}/attachments', ['uses' => 'ListController@attachments', 'as' => 'attachments']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user