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\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);
}
}

View File

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

View File

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