This commit is contained in:
James Cole
2021-02-27 05:59:40 +01:00
parent 2287339781
commit 43e8779e3b
3 changed files with 48 additions and 31 deletions

View File

@@ -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',

View File

@@ -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);

View File

@@ -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']);
} }
); );