From b54e99642b0e78293d8d6fc2fb81dc4f3403be35 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 7 Apr 2018 06:19:40 +0200 Subject: [PATCH] Refactor some auto complete routes. --- .../Json/AutoCompleteController.php | 79 +++++++++++++++++++ app/Http/Controllers/JsonController.php | 58 -------------- routes/web.php | 19 +++-- 3 files changed, 91 insertions(+), 65 deletions(-) diff --git a/app/Http/Controllers/Json/AutoCompleteController.php b/app/Http/Controllers/Json/AutoCompleteController.php index 2a0b712545..ef8dbb2b76 100644 --- a/app/Http/Controllers/Json/AutoCompleteController.php +++ b/app/Http/Controllers/Json/AutoCompleteController.php @@ -28,6 +28,11 @@ use FireflyIII\Models\Account; use FireflyIII\Models\AccountType; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Account\AccountRepositoryInterface; +use FireflyIII\Repositories\Bill\BillRepositoryInterface; +use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; +use FireflyIII\Repositories\Category\CategoryRepositoryInterface; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use FireflyIII\Repositories\Tag\TagRepositoryInterface; use FireflyIII\Support\CacheProperties; /** @@ -35,6 +40,7 @@ use FireflyIII\Support\CacheProperties; */ class AutoCompleteController extends Controller { + /** * Returns a JSON list of all accounts. * @@ -68,6 +74,51 @@ class AutoCompleteController extends Controller return response()->json($return); } + /** + * Returns a JSON list of all bills. + * + * @param BillRepositoryInterface $repository + * + * @return \Illuminate\Http\JsonResponse + */ + public function bills(BillRepositoryInterface $repository) + { + $return = array_unique( + $repository->getActiveBills()->pluck('name')->toArray() + ); + sort($return); + + return response()->json($return); + } + + /** + * @param BudgetRepositoryInterface $repository + * + * @return \Illuminate\Http\JsonResponse + */ + public function budgets(BudgetRepositoryInterface $repository) + { + $return = array_unique($repository->getBudgets()->pluck('name')->toArray()); + sort($return); + + return response()->json($return); + } + + /** + * Returns a list of categories. + * + * @param CategoryRepositoryInterface $repository + * + * @return \Illuminate\Http\JsonResponse + */ + public function categories(CategoryRepositoryInterface $repository) + { + $return = array_unique($repository->getCategories()->pluck('name')->toArray()); + sort($return); + + return response()->json($return); + } + /** * Returns a JSON list of all beneficiaries. * @@ -150,6 +201,21 @@ class AutoCompleteController extends Controller return response()->json($return); } + /** + * Returns a JSON list of all beneficiaries. + * + * @param TagRepositoryInterface $tagRepository + * + * @return \Illuminate\Http\JsonResponse + */ + public function tags(TagRepositoryInterface $tagRepository) + { + $return = array_unique($tagRepository->get()->pluck('tag')->toArray()); + sort($return); + + return response()->json($return); + } + /** * @param JournalCollectorInterface $collector * @param string $what @@ -167,4 +233,17 @@ class AutoCompleteController extends Controller return response()->json($return); } + + /** + * @param JournalRepositoryInterface $repository + * + * @return \Illuminate\Http\JsonResponse + */ + public function transactionTypes(JournalRepositoryInterface $repository) + { + $return = array_unique($repository->getTransactionTypes()->pluck('type')->toArray()); + sort($return); + + return response()->json($return); + } } diff --git a/app/Http/Controllers/JsonController.php b/app/Http/Controllers/JsonController.php index 199d342d48..1ab9a93808 100644 --- a/app/Http/Controllers/JsonController.php +++ b/app/Http/Controllers/JsonController.php @@ -53,68 +53,10 @@ class JsonController extends Controller return response()->json(['html' => $view]); } - /** - * @param BudgetRepositoryInterface $repository - * - * @return \Illuminate\Http\JsonResponse - */ - public function budgets(BudgetRepositoryInterface $repository) - { - $return = array_unique($repository->getBudgets()->pluck('name')->toArray()); - sort($return); - - return response()->json($return); - } - - /** - * Returns a list of categories. - * - * @param CategoryRepositoryInterface $repository - * - * @return \Illuminate\Http\JsonResponse - */ - public function categories(CategoryRepositoryInterface $repository) - { - $return = array_unique($repository->getCategories()->pluck('name')->toArray()); - sort($return); - - return response()->json($return); - } - - /** - * Returns a JSON list of all beneficiaries. - * - * @param TagRepositoryInterface $tagRepository - * - * @return \Illuminate\Http\JsonResponse - */ - public function tags(TagRepositoryInterface $tagRepository) - { - $return = array_unique($tagRepository->get()->pluck('tag')->toArray()); - sort($return); - - return response()->json($return); - } - - /** - * @param JournalRepositoryInterface $repository - * - * @return \Illuminate\Http\JsonResponse - */ - public function transactionTypes(JournalRepositoryInterface $repository) - { - $return = array_unique($repository->getTransactionTypes()->pluck('type')->toArray()); - sort($return); - - return response()->json($return); - } - /** * @param Request $request * * @return \Illuminate\Http\JsonResponse - * - */ public function trigger(Request $request) { diff --git a/routes/web.php b/routes/web.php index 5f251b5b73..9c156f7e6a 100755 --- a/routes/web.php +++ b/routes/web.php @@ -492,22 +492,27 @@ Route::group( */ Route::group( ['middleware' => 'user-full-auth', 'namespace' => 'FireflyIII\Http\Controllers', 'prefix' => 'json', 'as' => 'json.'], function () { + + // for auto complete Route::get('expense-accounts', ['uses' => 'Json\AutoCompleteController@expenseAccounts', 'as' => 'expense-accounts']); Route::get('all-accounts', ['uses' => 'Json\AutoCompleteController@allAccounts', 'as' => 'all-accounts']); Route::get('revenue-accounts', ['uses' => 'Json\AutoCompleteController@revenueAccounts', 'as' => 'revenue-accounts']); - Route::get('categories', ['uses' => 'JsonController@categories', 'as' => 'categories']); - Route::get('budgets', ['uses' => 'JsonController@budgets', 'as' => 'budgets']); - Route::get('tags', ['uses' => 'JsonController@tags', 'as' => 'tags']); + Route::get('categories', ['uses' => 'Json\AutoCompleteController@categories', 'as' => 'categories']); + Route::get('budgets', ['uses' => 'Json\AutoCompleteController@budgets', 'as' => 'budgets']); + Route::get('tags', ['uses' => 'Json\AutoCompleteController@tags', 'as' => 'tags']); + Route::get('bills', ['uses' => 'Json\AutoCompleteController@bills', 'as' => 'bills']); + Route::get('transaction-journals/all', ['uses' => 'Json\AutoCompleteController@allTransactionJournals', 'as' => 'all-transaction-journals']); + Route::get('transaction-journals/with-id/{tj}', ['uses' => 'Json\AutoCompleteController@journalsWithId', 'as' => 'journals-with-id']); + Route::get('transaction-journals/{what}', ['uses' => 'Json\AutoCompleteController@transactionJournals', 'as' => 'transaction-journals']); + Route::get('transaction-types', ['uses' => 'Json\AutoCompleteController@transactionTypes', 'as' => 'transaction-types']); + // boxes Route::get('box/balance', ['uses' => 'Json\BoxController@balance', 'as' => 'box.balance']); Route::get('box/bills', ['uses' => 'Json\BoxController@bills', 'as' => 'box.bills']); Route::get('box/available', ['uses' => 'Json\BoxController@available', 'as' => 'box.available']); Route::get('box/net-worth', ['uses' => 'Json\BoxController@netWorth', 'as' => 'box.net-worth']); - Route::get('transaction-journals/all', ['uses' => 'Json\AutoCompleteController@allTransactionJournals', 'as' => 'all-transaction-journals']); - Route::get('transaction-journals/with-id/{tj}', ['uses' => 'Json\AutoCompleteController@journalsWithId', 'as' => 'journals-with-id']); - Route::get('transaction-journals/{what}', ['uses' => 'Json\AutoCompleteController@transactionJournals', 'as' => 'transaction-journals']); - Route::get('transaction-types', ['uses' => 'JsonController@transactionTypes', 'as' => 'transaction-types']); + // rules Route::get('trigger', ['uses' => 'JsonController@trigger', 'as' => 'trigger']); Route::get('action', ['uses' => 'JsonController@action', 'as' => 'action']);