Refactor some auto complete routes.

This commit is contained in:
James Cole
2018-04-07 06:19:40 +02:00
parent b1ad0668cc
commit b54e99642b
3 changed files with 91 additions and 65 deletions

View File

@@ -28,6 +28,11 @@ use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; 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; use FireflyIII\Support\CacheProperties;
/** /**
@@ -35,6 +40,7 @@ use FireflyIII\Support\CacheProperties;
*/ */
class AutoCompleteController extends Controller class AutoCompleteController extends Controller
{ {
/** /**
* Returns a JSON list of all accounts. * Returns a JSON list of all accounts.
* *
@@ -68,6 +74,51 @@ class AutoCompleteController extends Controller
return response()->json($return); 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. * Returns a JSON list of all beneficiaries.
* *
@@ -150,6 +201,21 @@ class AutoCompleteController extends Controller
return response()->json($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 JournalCollectorInterface $collector * @param JournalCollectorInterface $collector
* @param string $what * @param string $what
@@ -167,4 +233,17 @@ class AutoCompleteController extends Controller
return response()->json($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);
}
} }

View File

@@ -53,68 +53,10 @@ class JsonController extends Controller
return response()->json(['html' => $view]); 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 * @param Request $request
* *
* @return \Illuminate\Http\JsonResponse * @return \Illuminate\Http\JsonResponse
*
*/ */
public function trigger(Request $request) public function trigger(Request $request)
{ {

View File

@@ -492,22 +492,27 @@ Route::group(
*/ */
Route::group( Route::group(
['middleware' => 'user-full-auth', 'namespace' => 'FireflyIII\Http\Controllers', 'prefix' => 'json', 'as' => 'json.'], function () { ['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('expense-accounts', ['uses' => 'Json\AutoCompleteController@expenseAccounts', 'as' => 'expense-accounts']);
Route::get('all-accounts', ['uses' => 'Json\AutoCompleteController@allAccounts', 'as' => 'all-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('revenue-accounts', ['uses' => 'Json\AutoCompleteController@revenueAccounts', 'as' => 'revenue-accounts']);
Route::get('categories', ['uses' => 'JsonController@categories', 'as' => 'categories']); Route::get('categories', ['uses' => 'Json\AutoCompleteController@categories', 'as' => 'categories']);
Route::get('budgets', ['uses' => 'JsonController@budgets', 'as' => 'budgets']); Route::get('budgets', ['uses' => 'Json\AutoCompleteController@budgets', 'as' => 'budgets']);
Route::get('tags', ['uses' => 'JsonController@tags', 'as' => 'tags']); 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/balance', ['uses' => 'Json\BoxController@balance', 'as' => 'box.balance']);
Route::get('box/bills', ['uses' => 'Json\BoxController@bills', 'as' => 'box.bills']); 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/available', ['uses' => 'Json\BoxController@available', 'as' => 'box.available']);
Route::get('box/net-worth', ['uses' => 'Json\BoxController@netWorth', 'as' => 'box.net-worth']); 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']); // rules
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']);
Route::get('trigger', ['uses' => 'JsonController@trigger', 'as' => 'trigger']); Route::get('trigger', ['uses' => 'JsonController@trigger', 'as' => 'trigger']);
Route::get('action', ['uses' => 'JsonController@action', 'as' => 'action']); Route::get('action', ['uses' => 'JsonController@action', 'as' => 'action']);