diff --git a/app/Api/V1/Controllers/Autocomplete/AccountController.php b/app/Api/V1/Controllers/Autocomplete/AccountController.php index 95e74fcba8..082186c37d 100644 --- a/app/Api/V1/Controllers/Autocomplete/AccountController.php +++ b/app/Api/V1/Controllers/Autocomplete/AccountController.php @@ -84,6 +84,7 @@ class AccountController extends Controller $types = $request->attributes->get('types'); $query = $request->attributes->get('query'); $date = $request->attributes->get('date'); + $limit = $request->attributes->get('limit'); $date = $date ?? today(config('app.timezone')); // set date to end-of-day for account balance. so it is at $date 23:59:59 @@ -92,7 +93,7 @@ class AccountController extends Controller $return = []; $timer = Timer::getInstance(); $timer->start(sprintf('AC accounts "%s"', $query)); - $result = $this->repository->searchAccount((string)$query, $types, $this->parameters->get('limit')); + $result = $this->repository->searchAccount((string)$query, $types, $limit); $allBalances = Steam::accountsBalancesOptimized($result, $date, $this->primaryCurrency, $this->convertToPrimary); /** @var Account $account */ diff --git a/app/Api/V1/Controllers/Autocomplete/BillController.php b/app/Api/V1/Controllers/Autocomplete/BillController.php index 5fea014b5c..1ae24d8229 100644 --- a/app/Api/V1/Controllers/Autocomplete/BillController.php +++ b/app/Api/V1/Controllers/Autocomplete/BillController.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; +use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteApiRequest; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\Bill; @@ -61,10 +62,9 @@ class BillController extends Controller * Documentation for this endpoint is at: * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getBillsAC */ - public function bills(AutocompleteRequest $request): JsonResponse + public function bills(AutocompleteApiRequest $request): JsonResponse { - $data = $request->getData(); - $result = $this->repository->searchBill($data['query'], $this->parameters->get('limit')); + $result = $this->repository->searchBill($request->attributes->get('query'), $request->attributes->get('limit')); $filtered = $result->map( static fn (Bill $item) => [ 'id' => (string) $item->id, diff --git a/app/Api/V1/Controllers/Autocomplete/BudgetController.php b/app/Api/V1/Controllers/Autocomplete/BudgetController.php index c292adc5b1..46c81cc60e 100644 --- a/app/Api/V1/Controllers/Autocomplete/BudgetController.php +++ b/app/Api/V1/Controllers/Autocomplete/BudgetController.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; +use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteApiRequest; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\Budget; @@ -61,10 +62,9 @@ class BudgetController extends Controller * Documentation for this endpoint is at: * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getBudgetsAC */ - public function budgets(AutocompleteRequest $request): JsonResponse + public function budgets(AutocompleteApiRequest $request): JsonResponse { - $data = $request->getData(); - $result = $this->repository->searchBudget($data['query'], $this->parameters->get('limit')); + $result = $this->repository->searchBudget($request->attributes->get('query'), $request->attributes->get('limit')); $filtered = $result->map( static fn (Budget $item) => [ 'id' => (string) $item->id, diff --git a/app/Api/V1/Controllers/Autocomplete/CategoryController.php b/app/Api/V1/Controllers/Autocomplete/CategoryController.php index cf24f56776..cf905a7306 100644 --- a/app/Api/V1/Controllers/Autocomplete/CategoryController.php +++ b/app/Api/V1/Controllers/Autocomplete/CategoryController.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; +use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteApiRequest; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\Category; @@ -61,10 +62,9 @@ class CategoryController extends Controller * Documentation for this endpoint is at: * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getCategoriesAC */ - public function categories(AutocompleteRequest $request): JsonResponse + public function categories(AutocompleteApiRequest $request): JsonResponse { - $data = $request->getData(); - $result = $this->repository->searchCategory($data['query'], $this->parameters->get('limit')); + $result = $this->repository->searchCategory($request->attributes->get('query'), $request->attributes->get('limit')); $filtered = $result->map( static fn (Category $item) => [ 'id' => (string) $item->id, diff --git a/app/Api/V1/Controllers/Autocomplete/CurrencyController.php b/app/Api/V1/Controllers/Autocomplete/CurrencyController.php index 427e03d5b9..1528e17c18 100644 --- a/app/Api/V1/Controllers/Autocomplete/CurrencyController.php +++ b/app/Api/V1/Controllers/Autocomplete/CurrencyController.php @@ -26,6 +26,7 @@ namespace FireflyIII\Api\V1\Controllers\Autocomplete; use Deprecated; use FireflyIII\Api\V1\Controllers\Controller; +use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteApiRequest; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\TransactionCurrency; @@ -62,10 +63,9 @@ class CurrencyController extends Controller * Documentation for this endpoint is at: * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getCurrenciesAC */ - public function currencies(AutocompleteRequest $request): JsonResponse + public function currencies(AutocompleteApiRequest $request): JsonResponse { - $data = $request->getData(); - $collection = $this->repository->searchCurrency($data['query'], $this->parameters->get('limit')); + $collection = $this->repository->searchCurrency($request->attributes->get('query'), $request->attributes->get('limit')); $result = []; /** @var TransactionCurrency $currency */ diff --git a/app/Api/V1/Controllers/Autocomplete/ObjectGroupController.php b/app/Api/V1/Controllers/Autocomplete/ObjectGroupController.php index 0f4126f941..401f064f5d 100644 --- a/app/Api/V1/Controllers/Autocomplete/ObjectGroupController.php +++ b/app/Api/V1/Controllers/Autocomplete/ObjectGroupController.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; +use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteApiRequest; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\ObjectGroup; @@ -61,11 +62,10 @@ class ObjectGroupController extends Controller * Documentation for this endpoint is at: * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getObjectGroupsAC */ - public function objectGroups(AutocompleteRequest $request): JsonResponse + public function objectGroups(AutocompleteApiRequest $request): JsonResponse { - $data = $request->getData(); $return = []; - $result = $this->repository->search($data['query'], $this->parameters->get('limit')); + $result = $this->repository->search($request->attributes->get('query'), $request->attributes->get('limit')); /** @var ObjectGroup $objectGroup */ foreach ($result as $objectGroup) { diff --git a/app/Api/V1/Controllers/Autocomplete/PiggyBankController.php b/app/Api/V1/Controllers/Autocomplete/PiggyBankController.php index 25fc1f145e..21f44c03de 100644 --- a/app/Api/V1/Controllers/Autocomplete/PiggyBankController.php +++ b/app/Api/V1/Controllers/Autocomplete/PiggyBankController.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; +use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteApiRequest; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\PiggyBank; @@ -64,10 +65,9 @@ class PiggyBankController extends Controller ); } - public function piggyBanks(AutocompleteRequest $request): JsonResponse + public function piggyBanks(AutocompleteApiRequest $request): JsonResponse { - $data = $request->getData(); - $piggies = $this->piggyRepository->searchPiggyBank($data['query'], $this->parameters->get('limit')); + $piggies = $this->piggyRepository->searchPiggyBank($request->attributes->get('query'), $request->attributes->get('limit')); $response = []; /** @var PiggyBank $piggy */ diff --git a/app/Api/V1/Controllers/Autocomplete/RecurrenceController.php b/app/Api/V1/Controllers/Autocomplete/RecurrenceController.php index 202cf398f2..53f100397d 100644 --- a/app/Api/V1/Controllers/Autocomplete/RecurrenceController.php +++ b/app/Api/V1/Controllers/Autocomplete/RecurrenceController.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; +use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteApiRequest; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\Recurrence; @@ -57,10 +58,9 @@ class RecurrenceController extends Controller ); } - public function recurring(AutocompleteRequest $request): JsonResponse + public function recurring(AutocompleteApiRequest $request): JsonResponse { - $data = $request->getData(); - $recurrences = $this->repository->searchRecurrence($data['query'], $this->parameters->get('limit')); + $recurrences = $this->repository->searchRecurrence($request->attributes->get('query'), $request->attributes->get('limit')); $response = []; /** @var Recurrence $recurrence */ diff --git a/app/Api/V1/Controllers/Autocomplete/RuleController.php b/app/Api/V1/Controllers/Autocomplete/RuleController.php index c2de7bb83b..a544cce872 100644 --- a/app/Api/V1/Controllers/Autocomplete/RuleController.php +++ b/app/Api/V1/Controllers/Autocomplete/RuleController.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; +use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteApiRequest; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\Rule; @@ -57,10 +58,9 @@ class RuleController extends Controller ); } - public function rules(AutocompleteRequest $request): JsonResponse + public function rules(AutocompleteApiRequest $request): JsonResponse { - $data = $request->getData(); - $rules = $this->repository->searchRule($data['query'], $this->parameters->get('limit')); + $rules = $this->repository->searchRule($request->attributes->get('query'), $request->attributes->get('limit')); $response = []; /** @var Rule $rule */ diff --git a/app/Api/V1/Controllers/Autocomplete/RuleGroupController.php b/app/Api/V1/Controllers/Autocomplete/RuleGroupController.php index ff496d1e13..2bc504c494 100644 --- a/app/Api/V1/Controllers/Autocomplete/RuleGroupController.php +++ b/app/Api/V1/Controllers/Autocomplete/RuleGroupController.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; +use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteApiRequest; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\RuleGroup; @@ -57,10 +58,9 @@ class RuleGroupController extends Controller ); } - public function ruleGroups(AutocompleteRequest $request): JsonResponse + public function ruleGroups(AutocompleteApiRequest $request): JsonResponse { - $data = $request->getData(); - $groups = $this->repository->searchRuleGroup($data['query'], $this->parameters->get('limit')); + $groups = $this->repository->searchRuleGroup($request->attributes->get('query'), $request->attributes->get('limit')); $response = []; /** @var RuleGroup $group */ diff --git a/app/Api/V1/Controllers/Autocomplete/TagController.php b/app/Api/V1/Controllers/Autocomplete/TagController.php index 5ad94ea7f5..56486b87b8 100644 --- a/app/Api/V1/Controllers/Autocomplete/TagController.php +++ b/app/Api/V1/Controllers/Autocomplete/TagController.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; +use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteApiRequest; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\Tag; @@ -57,10 +58,9 @@ class TagController extends Controller ); } - public function tags(AutocompleteRequest $request): JsonResponse + public function tags(AutocompleteApiRequest $request): JsonResponse { - $data = $request->getData(); - $result = $this->repository->searchTags($data['query'], $this->parameters->get('limit')); + $result = $this->repository->searchTags($request->attributes->get('query'), $request->attributes->get('limit')); $array = []; /** @var Tag $tag */ diff --git a/app/Api/V1/Controllers/Autocomplete/TransactionController.php b/app/Api/V1/Controllers/Autocomplete/TransactionController.php index d088427937..3d6226c215 100644 --- a/app/Api/V1/Controllers/Autocomplete/TransactionController.php +++ b/app/Api/V1/Controllers/Autocomplete/TransactionController.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; +use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteApiRequest; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\TransactionGroup; @@ -64,10 +65,9 @@ class TransactionController extends Controller ); } - public function transactions(AutocompleteRequest $request): JsonResponse + public function transactions(AutocompleteApiRequest $request): JsonResponse { - $data = $request->getData(); - $result = $this->repository->searchJournalDescriptions($data['query'], $this->parameters->get('limit')); + $result = $this->repository->searchJournalDescriptions($request->attributes->get('query'), $request->attributes->get('limit')); // limit and unique $filtered = $result->unique('description'); diff --git a/app/Api/V1/Controllers/Autocomplete/TransactionTypeController.php b/app/Api/V1/Controllers/Autocomplete/TransactionTypeController.php index 357efc37a1..364fedd5d9 100644 --- a/app/Api/V1/Controllers/Autocomplete/TransactionTypeController.php +++ b/app/Api/V1/Controllers/Autocomplete/TransactionTypeController.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; +use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteApiRequest; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\TransactionType; @@ -55,10 +56,9 @@ class TransactionTypeController extends Controller ); } - public function transactionTypes(AutocompleteRequest $request): JsonResponse + public function transactionTypes(AutocompleteApiRequest $request): JsonResponse { - $data = $request->getData(); - $types = $this->repository->searchTypes($data['query'], $this->parameters->get('limit')); + $types = $this->repository->searchTypes($request->attributes->get('query'), $request->attributes->get('limit')); $array = []; /** @var TransactionType $type */ diff --git a/app/Api/V1/Requests/Autocomplete/AutocompleteApiRequest.php b/app/Api/V1/Requests/Autocomplete/AutocompleteApiRequest.php index dc497e8183..a50db58616 100644 --- a/app/Api/V1/Requests/Autocomplete/AutocompleteApiRequest.php +++ b/app/Api/V1/Requests/Autocomplete/AutocompleteApiRequest.php @@ -26,6 +26,8 @@ use FireflyIII\Api\V1\Requests\DateRequest; use FireflyIII\Api\V1\Requests\Generic\QueryRequest; use FireflyIII\Api\V1\Requests\Models\Account\AccountTypeApiRequest; use FireflyIII\Api\V1\Requests\Models\Account\AccountTypesApiRequest; +use FireflyIII\Api\V1\Requests\PaginationRequest; +use FireflyIII\Models\Account; class AutocompleteApiRequest extends AggregateFormRequest @@ -36,6 +38,7 @@ class AutocompleteApiRequest extends AggregateFormRequest { return [ DateRequest::class, + [PaginationRequest::class, 'sort_class' => Account::class], AccountTypesApiRequest::class, QueryRequest::class, ];