diff --git a/app/Http/Controllers/Json/AutoCompleteController.php b/app/Http/Controllers/Json/AutoCompleteController.php index f0a1005837..d57aa9ea24 100644 --- a/app/Http/Controllers/Json/AutoCompleteController.php +++ b/app/Http/Controllers/Json/AutoCompleteController.php @@ -283,6 +283,39 @@ class AutoCompleteController extends Controller return response()->json($return); } + + /** + * An auto-complete specifically for asset accounts and liabilities, used when mass updating and for rules mostly. + * + * @param Request $request + * + * @return JsonResponse + */ + public function assetAccounts(Request $request): JsonResponse + { + $search = $request->get('search'); + /** @var AccountRepositoryInterface $repository */ + $repository = app(AccountRepositoryInterface::class); + + // filter the account types: + $allowedAccountTypes = [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]; + Log::debug(sprintf('Now in expenseAccounts(%s). Filtering results.', $search), $allowedAccountTypes); + + $return = []; + $result = $repository->searchAccount((string)$search, $allowedAccountTypes); + + /** @var Account $account */ + foreach ($result as $account) { + $return[] = [ + 'id' => $account->id, + 'name' => $account->name, + 'type' => $account->accountType->type, + ]; + } + + return response()->json($return); + } + /** * @return JsonResponse * @codeCoverageIgnore diff --git a/routes/web.php b/routes/web.php index df8cc13611..031480ed93 100644 --- a/routes/web.php +++ b/routes/web.php @@ -556,6 +556,7 @@ Route::group( Route::get('accounts', ['uses' => 'Json\AutoCompleteController@accounts', 'as' => 'autocomplete.accounts']); Route::get('revenue-accounts', ['uses' => 'Json\AutoCompleteController@revenueAccounts', 'as' => 'autocomplete.revenue-accounts']); Route::get('expense-accounts', ['uses' => 'Json\AutoCompleteController@expenseAccounts', 'as' => 'autocomplete.expense-accounts']); + Route::get('asset-accounts', ['uses' => 'Json\AutoCompleteController@assetAccounts', 'as' => 'autocomplete.asset-accounts']); Route::get('budgets', ['uses' => 'Json\AutoCompleteController@budgets', 'as' => 'autocomplete.budgets']); Route::get('categories', ['uses' => 'Json\AutoCompleteController@categories', 'as' => 'autocomplete.categories']); Route::get('currencies', ['uses' => 'Json\AutoCompleteController@currencies', 'as' => 'autocomplete.currencies']);