diff --git a/app/Crud/Account/AccountCrud.php b/app/Crud/Account/AccountCrud.php index 9ba5b99116..ffc6cbf27d 100644 --- a/app/Crud/Account/AccountCrud.php +++ b/app/Crud/Account/AccountCrud.php @@ -84,30 +84,6 @@ class AccountCrud implements AccountCrudInterface return new Account; } - /** - * @param array $accountIds - * - * @return Collection - */ - public function getAccountsById(array $accountIds): Collection - { - /** @var Collection $result */ - $query = $this->user->accounts(); - - if (count($accountIds) > 0) { - $query->whereIn('accounts.id', $accountIds); - } - - $result = $query->get(['accounts.*']); - $result = $result->sortBy( - function (Account $account) { - return strtolower($account->name); - } - ); - - return $result; - } - /** * @param array $types * diff --git a/app/Crud/Account/AccountCrudInterface.php b/app/Crud/Account/AccountCrudInterface.php index b6c0466868..8462b19e76 100644 --- a/app/Crud/Account/AccountCrudInterface.php +++ b/app/Crud/Account/AccountCrudInterface.php @@ -35,13 +35,6 @@ interface AccountCrudInterface */ public function findByName(string $name, array $types): Account; - /** - * @param array $accountIds - * - * @return Collection - */ - public function getAccountsById(array $accountIds): Collection; - /** * @param array $types * diff --git a/app/Http/Controllers/Chart/AccountController.php b/app/Http/Controllers/Chart/AccountController.php index 44bd381f47..e8877b2c6c 100644 --- a/app/Http/Controllers/Chart/AccountController.php +++ b/app/Http/Controllers/Chart/AccountController.php @@ -21,6 +21,7 @@ use FireflyIII\Generator\Chart\Account\AccountChartGeneratorInterface; use FireflyIII\Http\Controllers\Controller; use FireflyIII\Models\Account; use FireflyIII\Models\AccountType; +use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Support\CacheProperties; use Illuminate\Support\Collection; use Log; @@ -102,11 +103,12 @@ class AccountController extends Controller /** * Shows the balances for all the user's frontpage accounts. * - * @param AccountCrudInterface $crud + * @param AccountCrudInterface $crud + * @param AccountRepositoryInterface $repository * * @return \Illuminate\Http\JsonResponse */ - public function frontpage(AccountCrudInterface $crud) + public function frontpage(AccountCrudInterface $crud, AccountRepositoryInterface $repository) { $start = clone session('start', Carbon::now()->startOfMonth()); $end = clone session('end', Carbon::now()->endOfMonth()); @@ -123,7 +125,7 @@ class AccountController extends Controller } $frontPage = Preferences::get('frontPageAccounts', $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET])->pluck('id')->toArray()); - $accounts = $crud->getAccountsById($frontPage->data); + $accounts = $repository->getAccountsById($frontPage->data); foreach ($accounts as $account) { $balances = []; diff --git a/app/Http/Controllers/ExportController.php b/app/Http/Controllers/ExportController.php index 84003aab26..59d8cded47 100644 --- a/app/Http/Controllers/ExportController.php +++ b/app/Http/Controllers/ExportController.php @@ -22,6 +22,7 @@ use FireflyIII\Export\Processor; use FireflyIII\Http\Requests\ExportFormRequest; use FireflyIII\Models\AccountType; use FireflyIII\Models\ExportJob; +use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\ExportJob\ExportJobRepositoryInterface as EJRI; use Preferences; use Response; @@ -116,20 +117,20 @@ class ExportController extends Controller } /** - * @param ExportFormRequest $request - * @param AccountCrudInterface $crud - * - * @param EJRI $jobs + * @param ExportFormRequest $request + * @param AccountRepositoryInterface $repository + * @param EJRI $jobs * * @return string - * @throws \FireflyIII\Exceptions\FireflyException + * @internal param AccountCrudInterface $crud + * */ - public function postIndex(ExportFormRequest $request, AccountCrudInterface $crud, EJRI $jobs) + public function postIndex(ExportFormRequest $request, AccountRepositoryInterface $repository, EJRI $jobs) { set_time_limit(0); $job = $jobs->findByKey($request->get('job')); $settings = [ - 'accounts' => $crud->getAccountsById($request->get('accounts')), + 'accounts' => $repository->getAccountsById($request->get('accounts')), 'startDate' => new Carbon($request->get('export_start_range')), 'endDate' => new Carbon($request->get('export_end_range')), 'exportFormat' => $request->get('exportFormat'), diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 740ac32380..63b2332792 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -142,7 +142,7 @@ class HomeController extends Controller /** @var Carbon $end */ $end = session('end', Carbon::now()->endOfMonth()); $showTour = Preferences::get('tour', true)->data; - $accounts = $crud->getAccountsById($frontPage->data); + $accounts = $repository->getAccountsById($frontPage->data); foreach ($accounts as $account) { $set = $tasker->getJournalsInPeriod(new Collection([$account]), [], $start, $end); diff --git a/app/Http/Controllers/RuleGroupController.php b/app/Http/Controllers/RuleGroupController.php index 0998099348..5345b95041 100644 --- a/app/Http/Controllers/RuleGroupController.php +++ b/app/Http/Controllers/RuleGroupController.php @@ -21,6 +21,7 @@ use FireflyIII\Http\Requests\SelectTransactionsRequest; use FireflyIII\Jobs\ExecuteRuleGroupOnExistingTransactions; use FireflyIII\Models\AccountType; use FireflyIII\Models\RuleGroup; +use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface; use Input; use Preferences; @@ -146,16 +147,16 @@ class RuleGroupController extends Controller /** * Execute the given rulegroup on a set of existing transactions * - * @param SelectTransactionsRequest $request - * @param AccountCrudInterface $crud - * @param RuleGroup $ruleGroup + * @param SelectTransactionsRequest $request + * @param AccountRepositoryInterface $repository + * @param RuleGroup $ruleGroup * * @return \Illuminate\Http\RedirectResponse */ - public function execute(SelectTransactionsRequest $request, AccountCrudInterface $crud, RuleGroup $ruleGroup) + public function execute(SelectTransactionsRequest $request, AccountRepositoryInterface $repository, RuleGroup $ruleGroup) { // Get parameters specified by the user - $accounts = $crud->getAccountsById($request->get('accounts')); + $accounts = $repository->getAccountsById($request->get('accounts')); $startDate = new Carbon($request->get('start_date')); $endDate = new Carbon($request->get('end_date')); diff --git a/app/Repositories/Account/AccountRepository.php b/app/Repositories/Account/AccountRepository.php index cec23d1239..9b9c679103 100644 --- a/app/Repositories/Account/AccountRepository.php +++ b/app/Repositories/Account/AccountRepository.php @@ -178,6 +178,30 @@ class AccountRepository implements AccountRepositoryInterface return new Account; } + /** + * @param array $accountIds + * + * @return Collection + */ + public function getAccountsById(array $accountIds): Collection + { + /** @var Collection $result */ + $query = $this->user->accounts(); + + if (count($accountIds) > 0) { + $query->whereIn('accounts.id', $accountIds); + } + + $result = $query->get(['accounts.*']); + $result = $result->sortBy( + function (Account $account) { + return strtolower($account->name); + } + ); + + return $result; + } + /** * Returns the date of the very first transaction in this account. * diff --git a/app/Repositories/Account/AccountRepositoryInterface.php b/app/Repositories/Account/AccountRepositoryInterface.php index fdcfb38aed..837885cc49 100644 --- a/app/Repositories/Account/AccountRepositoryInterface.php +++ b/app/Repositories/Account/AccountRepositoryInterface.php @@ -15,6 +15,7 @@ namespace FireflyIII\Repositories\Account; use Carbon\Carbon; use FireflyIII\Models\Account; +use Illuminate\Support\Collection; /** * Interface AccountRepositoryInterface @@ -33,6 +34,13 @@ interface AccountRepositoryInterface */ public function count(array $types): int; + /** + * @param array $accountIds + * + * @return Collection + */ + public function getAccountsById(array $accountIds): Collection; + /** * @param string $name * @param array $types