Update API endpoints.

This commit is contained in:
James Cole 2021-09-18 05:26:31 +02:00
parent 4fcc659263
commit 190b6fb25f
No known key found for this signature in database
GPG Key ID: BDE6667570EADBD5
20 changed files with 90 additions and 32 deletions

View File

@ -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
{

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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
{

View File

@ -57,6 +57,8 @@ class AccountController extends Controller
}
/**
* This endpoint is deprecated and not documented.
* @deprecated
* @param MoveTransactionsRequest $request
*
* @return JsonResponse

View File

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

View File

@ -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
*/

View File

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

View File

@ -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 => {

View File

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