diff --git a/app/Api/V1/Controllers/Autocomplete/AccountController.php b/app/Api/V1/Controllers/Autocomplete/AccountController.php index dbe91e2566..e9a6cfd232 100644 --- a/app/Api/V1/Controllers/Autocomplete/AccountController.php +++ b/app/Api/V1/Controllers/Autocomplete/AccountController.php @@ -25,12 +25,14 @@ namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; +use FireflyIII\Exceptions\FireflyException; use FireflyIII\Models\Account; use FireflyIII\Models\AccountType; use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Support\Http\Api\AccountFilter; use FireflyIII\User; use Illuminate\Http\JsonResponse; +use JsonException; /** * Class AccountController @@ -62,9 +64,14 @@ class AccountController extends Controller } /** + * Documentation for this endpoint: + * https://api-docs.firefly-iii.org/#/autocomplete/getAccountsAC + * * @param AutocompleteRequest $request * * @return JsonResponse + * @throws FireflyException + * @throws JsonException */ public function accounts(AutocompleteRequest $request): JsonResponse { diff --git a/app/Api/V1/Controllers/Autocomplete/BillController.php b/app/Api/V1/Controllers/Autocomplete/BillController.php index 6369629f30..6033d7f6e3 100644 --- a/app/Api/V1/Controllers/Autocomplete/BillController.php +++ b/app/Api/V1/Controllers/Autocomplete/BillController.php @@ -56,6 +56,9 @@ class BillController extends Controller } /** + * Documentation for this endpoint is at: + * https://api-docs.firefly-iii.org/#/autocomplete/getBillsAC + * * @param AutocompleteRequest $request * * @return JsonResponse diff --git a/app/Api/V1/Controllers/Autocomplete/BudgetController.php b/app/Api/V1/Controllers/Autocomplete/BudgetController.php index 62c12b7a4a..c1ddc3e638 100644 --- a/app/Api/V1/Controllers/Autocomplete/BudgetController.php +++ b/app/Api/V1/Controllers/Autocomplete/BudgetController.php @@ -56,6 +56,9 @@ class BudgetController extends Controller } /** + * Documentation for this endpoint is at: + * https://api-docs.firefly-iii.org/#/autocomplete/getBudgetsAC + * * @param AutocompleteRequest $request * * @return JsonResponse diff --git a/app/Api/V1/Controllers/Autocomplete/CategoryController.php b/app/Api/V1/Controllers/Autocomplete/CategoryController.php index 9798c8579b..4bf324f815 100644 --- a/app/Api/V1/Controllers/Autocomplete/CategoryController.php +++ b/app/Api/V1/Controllers/Autocomplete/CategoryController.php @@ -56,6 +56,9 @@ class CategoryController extends Controller } /** + * Documentation for this endpoint is at: + * https://api-docs.firefly-iii.org/#/autocomplete/getCategoriesAC + * * @param AutocompleteRequest $request * * @return JsonResponse diff --git a/app/Api/V1/Controllers/Autocomplete/CurrencyController.php b/app/Api/V1/Controllers/Autocomplete/CurrencyController.php index e9abdbf128..a9d6d11cc4 100644 --- a/app/Api/V1/Controllers/Autocomplete/CurrencyController.php +++ b/app/Api/V1/Controllers/Autocomplete/CurrencyController.php @@ -56,6 +56,9 @@ class CurrencyController extends Controller } /** + * Documentation for this endpoint is at: + * https://api-docs.firefly-iii.org/#/autocomplete/getCurrenciesAC + * * @param AutocompleteRequest $request * * @return JsonResponse @@ -81,8 +84,11 @@ class CurrencyController extends Controller } /** - * @param AutocompleteRequest $request + * Documentation for this endpoint is at: + * https://api-docs.firefly-iii.org/#/autocomplete/getCurrenciesCodeAC * + * @param AutocompleteRequest $request + * @deprecated * @return JsonResponse */ public function currenciesWithCode(AutocompleteRequest $request): JsonResponse diff --git a/app/Api/V1/Controllers/Autocomplete/ObjectGroupController.php b/app/Api/V1/Controllers/Autocomplete/ObjectGroupController.php index 00342d21a4..61d9ba3dc0 100644 --- a/app/Api/V1/Controllers/Autocomplete/ObjectGroupController.php +++ b/app/Api/V1/Controllers/Autocomplete/ObjectGroupController.php @@ -56,6 +56,8 @@ class ObjectGroupController extends Controller } /** + * Documentation for this endpoint is at: + * https://api-docs.firefly-iii.org/#/autocomplete/getObjectGroupsAC * @param AutocompleteRequest $request * * @return JsonResponse diff --git a/app/Api/V1/Controllers/Autocomplete/PiggyBankController.php b/app/Api/V1/Controllers/Autocomplete/PiggyBankController.php index 403cdf71c4..2a903e1318 100644 --- a/app/Api/V1/Controllers/Autocomplete/PiggyBankController.php +++ b/app/Api/V1/Controllers/Autocomplete/PiggyBankController.php @@ -36,7 +36,7 @@ use Illuminate\Http\JsonResponse; */ class PiggyBankController extends Controller { - private AccountRepositoryInterface $accountRepository; + private AccountRepositoryInterface $accountRepository; private PiggyBankRepositoryInterface $piggyRepository; /** @@ -60,6 +60,9 @@ class PiggyBankController extends Controller } /** + * This endpoint is documented at: + * https://api-docs.firefly-iii.org/#/autocomplete/getPiggiesAC + * * @param AutocompleteRequest $request * * @return JsonResponse @@ -80,6 +83,7 @@ class PiggyBankController extends Controller 'currency_id' => $currency->id, 'currency_name' => $currency->name, 'currency_code' => $currency->code, + 'currency_symbol' => $currency->symbol, 'currency_decimal_places' => $currency->decimal_places, ]; } @@ -88,6 +92,9 @@ class PiggyBankController extends Controller } /** + * This endpoint is documented at: + * https://api-docs.firefly-iii.org/#/autocomplete/getPiggiesBalanceAC + * * @param AutocompleteRequest $request * * @return JsonResponse @@ -112,6 +119,7 @@ class PiggyBankController extends Controller 'currency_id' => $currency->id, 'currency_name' => $currency->name, 'currency_code' => $currency->code, + 'currency_symbol' => $currency->symbol, 'currency_decimal_places' => $currency->decimal_places, ]; } diff --git a/app/Api/V1/Controllers/Autocomplete/RecurrenceController.php b/app/Api/V1/Controllers/Autocomplete/RecurrenceController.php index 7569c1e4e6..aa133d7192 100644 --- a/app/Api/V1/Controllers/Autocomplete/RecurrenceController.php +++ b/app/Api/V1/Controllers/Autocomplete/RecurrenceController.php @@ -25,7 +25,7 @@ namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; -use FireflyIII\Models\Rule; +use FireflyIII\Models\Recurrence; use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface; use Illuminate\Http\JsonResponse; @@ -53,22 +53,25 @@ class RecurrenceController extends Controller } /** + * This endpoint is documented at: + * https://api-docs.firefly-iii.org/#/autocomplete/getRecurringAC + * * @param AutocompleteRequest $request * * @return JsonResponse */ public function recurring(AutocompleteRequest $request): JsonResponse { - $data = $request->getData(); - $rules = $this->repository->searchRecurrence($data['query'], $data['limit']); - $response = []; + $data = $request->getData(); + $recurrences = $this->repository->searchRecurrence($data['query'], $data['limit']); + $response = []; - /** @var Rule $rule */ - foreach ($rules as $rule) { + /** @var Recurrence $recurrence */ + foreach ($recurrences as $recurrence) { $response[] = [ - 'id' => (string)$rule->id, - 'name' => $rule->title, - 'description' => $rule->description, + 'id' => (string)$recurrence->id, + 'name' => $recurrence->title, + 'description' => $recurrence->description, ]; } diff --git a/app/Api/V1/Controllers/Autocomplete/RuleController.php b/app/Api/V1/Controllers/Autocomplete/RuleController.php index 8d64b4ef65..dadfd66d75 100644 --- a/app/Api/V1/Controllers/Autocomplete/RuleController.php +++ b/app/Api/V1/Controllers/Autocomplete/RuleController.php @@ -53,6 +53,9 @@ class RuleController extends Controller } /** + * This endpoint is documented at: + * https://api-docs.firefly-iii.org/#/autocomplete/getRulesAC + * * @param AutocompleteRequest $request * * @return JsonResponse diff --git a/app/Api/V1/Controllers/Autocomplete/RuleGroupController.php b/app/Api/V1/Controllers/Autocomplete/RuleGroupController.php index bc269f20f8..a4fc1cf437 100644 --- a/app/Api/V1/Controllers/Autocomplete/RuleGroupController.php +++ b/app/Api/V1/Controllers/Autocomplete/RuleGroupController.php @@ -53,6 +53,9 @@ class RuleGroupController extends Controller } /** + * This endpoint is documented at: + * https://api-docs.firefly-iii.org/#/autocomplete/getRuleGroupsAC + * * @param AutocompleteRequest $request * * @return JsonResponse diff --git a/app/Api/V1/Controllers/Autocomplete/TagController.php b/app/Api/V1/Controllers/Autocomplete/TagController.php index 47b51e43a4..12e3498415 100644 --- a/app/Api/V1/Controllers/Autocomplete/TagController.php +++ b/app/Api/V1/Controllers/Autocomplete/TagController.php @@ -56,6 +56,9 @@ class TagController extends Controller } /** + * This endpoint is documented at: + * https://api-docs.firefly-iii.org/#/autocomplete/getTagAC + * * @param AutocompleteRequest $request * * @return JsonResponse diff --git a/app/Api/V1/Controllers/Autocomplete/TransactionController.php b/app/Api/V1/Controllers/Autocomplete/TransactionController.php index 5ce1debfb6..923d9d1602 100644 --- a/app/Api/V1/Controllers/Autocomplete/TransactionController.php +++ b/app/Api/V1/Controllers/Autocomplete/TransactionController.php @@ -61,6 +61,9 @@ class TransactionController extends Controller } /** + * This endpoint is documented at: + * https://api-docs.firefly-iii.org/#/autocomplete/getTransactionsAC + * * @param AutocompleteRequest $request * * @return JsonResponse @@ -88,6 +91,9 @@ class TransactionController extends Controller } /** + * This endpoint is documented at: + * https://api-docs.firefly-iii.org/#/autocomplete/getTransactionsIDAC + * * @param AutocompleteRequest $request * * @return JsonResponse diff --git a/app/Api/V1/Controllers/Autocomplete/TransactionTypeController.php b/app/Api/V1/Controllers/Autocomplete/TransactionTypeController.php index 6143d0db36..2318c5fdb3 100644 --- a/app/Api/V1/Controllers/Autocomplete/TransactionTypeController.php +++ b/app/Api/V1/Controllers/Autocomplete/TransactionTypeController.php @@ -52,6 +52,9 @@ class TransactionTypeController extends Controller } /** + * This endpoint is documented at + * https://api-docs.firefly-iii.org/#/autocomplete/getTransactionTypesAC + * * @param AutocompleteRequest $request * * @return JsonResponse diff --git a/app/Api/V1/Controllers/Chart/AccountController.php b/app/Api/V1/Controllers/Chart/AccountController.php index 22472602a7..7fd8b1864e 100644 --- a/app/Api/V1/Controllers/Chart/AccountController.php +++ b/app/Api/V1/Controllers/Chart/AccountController.php @@ -27,6 +27,7 @@ namespace FireflyIII\Api\V1\Controllers\Chart; use Carbon\Carbon; use FireflyIII\Api\V1\Controllers\Controller; use FireflyIII\Api\V1\Requests\Data\DateRequest; +use FireflyIII\Exceptions\FireflyException; use FireflyIII\Models\Account; use FireflyIII\Models\AccountType; use FireflyIII\Repositories\Account\AccountRepositoryInterface; @@ -69,9 +70,13 @@ class AccountController extends Controller } /** + * This endpoint is documented at: + * https://api-docs.firefly-iii.org/#/charts/getChartAccountOverview + * * @param DateRequest $request * * @return JsonResponse + * @throws FireflyException */ public function overview(DateRequest $request): JsonResponse { diff --git a/app/Api/V1/Controllers/Data/Bulk/AccountController.php b/app/Api/V1/Controllers/Data/Bulk/AccountController.php index a3584e1ed6..3508c9393e 100644 --- a/app/Api/V1/Controllers/Data/Bulk/AccountController.php +++ b/app/Api/V1/Controllers/Data/Bulk/AccountController.php @@ -57,6 +57,8 @@ class AccountController extends Controller } /** + * This endpoint is deprecated and not documented. + * @deprecated * @param MoveTransactionsRequest $request * * @return JsonResponse diff --git a/app/Api/V1/Controllers/Data/Bulk/TransactionController.php b/app/Api/V1/Controllers/Data/Bulk/TransactionController.php index 1138b4838c..79435f58b8 100644 --- a/app/Api/V1/Controllers/Data/Bulk/TransactionController.php +++ b/app/Api/V1/Controllers/Data/Bulk/TransactionController.php @@ -61,6 +61,8 @@ class TransactionController extends Controller } /** + * This endpoint is documented at: + * * @param TransactionRequest $request * * @return JsonResponse @@ -69,12 +71,13 @@ class TransactionController extends Controller { $query = $request->getAll(); $params = $query['query']; + // this deserves better code, but for now a loop of basic if-statements // to respond to what is in the $query. // this is OK because only one thing can be in the query at the moment. if ($this->updatesTransactionAccount($params)) { - $original = $this->repository->find((int)$params['where']['source_account_id']); - $destination = $this->repository->find((int)$params['update']['destination_account_id']); + $original = $this->repository->find((int)$params['where']['account_id']); + $destination = $this->repository->find((int)$params['update']['account_id']); /** @var AccountDestroyService $service */ $service = app(AccountDestroyService::class); @@ -91,7 +94,7 @@ class TransactionController extends Controller */ private function updatesTransactionAccount(array $params): bool { - return array_key_exists('source_account_id', $params['where']) && array_key_exists('destination_account_id', $params['update']); + return array_key_exists('account_id', $params['where']) && array_key_exists('account_id', $params['update']); } } diff --git a/app/Api/V1/Requests/Data/Bulk/MoveTransactionsRequest.php b/app/Api/V1/Requests/Data/Bulk/MoveTransactionsRequest.php index e343066d47..f28790f0dd 100644 --- a/app/Api/V1/Requests/Data/Bulk/MoveTransactionsRequest.php +++ b/app/Api/V1/Requests/Data/Bulk/MoveTransactionsRequest.php @@ -63,7 +63,7 @@ class MoveTransactionsRequest extends FormRequest * Configure the validator instance with special rules for after the basic validation rules. * * @param Validator $validator -* See reference nr. 74 + * See reference nr. 74 * * @return void */ diff --git a/app/Validation/Api/Data/Bulk/ValidatesBulkTransactionQuery.php b/app/Validation/Api/Data/Bulk/ValidatesBulkTransactionQuery.php index 7f5f21839d..71c88d91d9 100644 --- a/app/Validation/Api/Data/Bulk/ValidatesBulkTransactionQuery.php +++ b/app/Validation/Api/Data/Bulk/ValidatesBulkTransactionQuery.php @@ -26,6 +26,7 @@ namespace FireflyIII\Validation\Api\Data\Bulk; use FireflyIII\Repositories\Account\AccountRepositoryInterface; use Illuminate\Validation\Validator; +use JsonException; /** * @@ -34,30 +35,32 @@ trait ValidatesBulkTransactionQuery { /** * @param Validator $validator + * + * @throws JsonException */ protected function validateTransactionQuery(Validator $validator): void { $data = $validator->getData(); // assumption is all validation has already taken place // and the query key exists. - $json = json_decode($data['query'], true, 8); + $json = json_decode($data['query'], true, 8, JSON_THROW_ON_ERROR); - if (array_key_exists('source_account_id', $json['where']) - && array_key_exists('destination_account_id', $json['update']) + if (array_key_exists('account_id', $json['where']) + && array_key_exists('account_id', $json['update']) ) { // find both accounts // must be same type. // already validated: belongs to this user. $repository = app(AccountRepositoryInterface::class); - $source = $repository->find((int)$json['where']['source_account_id']); - $dest = $repository->find((int)$json['update']['destination_account_id']); + $source = $repository->find((int)$json['where']['account_id']); + $dest = $repository->find((int)$json['update']['account_id']); if (null === $source) { - $validator->errors()->add('query', sprintf((string)trans('validation.invalid_query_data'), 'where', 'source_account_id')); + $validator->errors()->add('query', sprintf((string)trans('validation.invalid_query_data'), 'where', 'account_id')); return; } if (null === $dest) { - $validator->errors()->add('query', sprintf((string)trans('validation.invalid_query_data'), 'update', 'destination_account_id')); + $validator->errors()->add('query', sprintf((string)trans('validation.invalid_query_data'), 'update', 'account_id')); return; } diff --git a/frontend/src/components/accounts/Delete.vue b/frontend/src/components/accounts/Delete.vue index fd77045e32..f8eb09a831 100644 --- a/frontend/src/components/accounts/Delete.vue +++ b/frontend/src/components/accounts/Delete.vue @@ -110,8 +110,8 @@ export default { let query = { - where: {source_account_id: this.accountId}, - update: {destination_account_id: this.moveToAccount} + where: {account_id: this.accountId}, + update: {account_id: this.moveToAccount} }; axios.post('./api/v1/data/bulk/transactions', {query: JSON.stringify(query)}).then(response => { diff --git a/routes/api.php b/routes/api.php index 83b658f039..88d0a3c982 100644 --- a/routes/api.php +++ b/routes/api.php @@ -98,14 +98,6 @@ Route::group( Route::post('transactions', ['uses' => 'TransactionController@update', 'as' => 'transactions']); } ); -//Route::group( -// ['namespace' => 'FireflyIII\Api\V1\Controllers\Data\Bulk', 'prefix' => 'data/bulk', -// 'as' => 'api.v1.data.bulk.',], -// static function () { -// Route::post('transactions', ['uses' => 'AccountController@moveTransactions', 'as' => 'accounts.move-transactions']); -// } -//); - /** * INSIGHTS ROUTES