From 3c3a83330d69b221a1d7f8f2215bd5aeb97c2b2e Mon Sep 17 00:00:00 2001 From: James Cole Date: Fri, 20 May 2016 11:02:07 +0200 Subject: [PATCH] More moving stuff around. --- app/Crud/Account/AccountCrud.php | 59 +++++++++++++++++++ app/Crud/Account/AccountCrudInterface.php | 15 +++++ .../Events/ConnectTransactionToPiggyBank.php | 1 - .../Csv/Converter/AssetAccountIban.php | 15 ++--- .../Csv/Converter/AssetAccountName.php | 8 +-- .../Csv/Converter/AssetAccountNumber.php | 8 +-- .../Csv/Converter/OpposingAccountIban.php | 9 +-- app/Helpers/Report/ReportHelper.php | 2 - app/Http/Controllers/AccountController.php | 20 +++---- app/Http/Controllers/BudgetController.php | 14 ++--- .../Controllers/Chart/AccountController.php | 20 +++---- app/Http/Controllers/CsvController.php | 9 +-- app/Http/Controllers/ExportController.php | 11 ++-- app/Http/Controllers/HomeController.php | 12 ++-- app/Http/Controllers/JsonController.php | 30 ++++++---- app/Http/Controllers/PiggyBankController.php | 18 +++--- .../Controllers/PreferencesController.php | 11 ++-- app/Http/Controllers/ReportController.php | 9 +-- app/Http/Controllers/RuleGroupController.php | 12 ++-- app/Http/Middleware/IsAdmin.php | 1 - app/Providers/EventServiceProvider.php | 14 ++--- app/Providers/RuleServiceProvider.php | 1 - .../Account/AccountRepository.php | 57 ------------------ .../Account/AccountRepositoryInterface.php | 17 +----- .../Category/CategoryRepository.php | 8 +-- app/Rules/Actions/SetBudget.php | 2 +- app/Rules/Triggers/FromAccountContains.php | 2 +- app/Rules/Triggers/FromAccountIs.php | 2 +- app/Rules/Triggers/ToAccountIs.php | 4 +- .../Models/TransactionJournalSupport.php | 1 - 30 files changed, 197 insertions(+), 195 deletions(-) diff --git a/app/Crud/Account/AccountCrud.php b/app/Crud/Account/AccountCrud.php index a30dca3e70..b7ddca7f8d 100644 --- a/app/Crud/Account/AccountCrud.php +++ b/app/Crud/Account/AccountCrud.php @@ -19,6 +19,8 @@ use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionType; use FireflyIII\User; +use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Support\Collection; use Log; @@ -78,6 +80,63 @@ class AccountCrud implements AccountCrudInterface return $account; } + /** + * @param array $accountIds + * + * @return Collection + */ + public function getAccountsById(array $accountIds): Collection + { + /** @var Collection $result */ + $query = $this->user->accounts()->with( + ['accountmeta' => function (HasMany $query) { + $query->where('name', 'accountRole'); + }] + ); + + 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 + * + * @return Collection + */ + public function getAccountsByType(array $types): Collection + { + /** @var Collection $result */ + $query = $this->user->accounts()->with( + ['accountmeta' => function (HasMany $query) { + $query->where('name', 'accountRole'); + }] + ); + if (count($types) > 0) { + $query->accountTypeIn($types); + } + + $result = $query->get(['accounts.*']); + + $result = $result->sortBy( + function (Account $account) { + return strtolower($account->name); + } + ); + + return $result; + } + /** * @param array $data * diff --git a/app/Crud/Account/AccountCrudInterface.php b/app/Crud/Account/AccountCrudInterface.php index 4c2b3a8f1d..a51985721c 100644 --- a/app/Crud/Account/AccountCrudInterface.php +++ b/app/Crud/Account/AccountCrudInterface.php @@ -13,6 +13,7 @@ namespace FireflyIII\Crud\Account; use FireflyIII\Models\Account; use FireflyIII\Models\AccountMeta; +use Illuminate\Support\Collection; /** * Interface AccountCrudInterface @@ -36,6 +37,20 @@ interface AccountCrudInterface */ public function find(int $accountId): Account; + /** + * @param array $accountIds + * + * @return Collection + */ + public function getAccountsById(array $accountIds): Collection; + + /** + * @param array $types + * + * @return Collection + */ + public function getAccountsByType(array $types): Collection; + /** * @param array $data * diff --git a/app/Handlers/Events/ConnectTransactionToPiggyBank.php b/app/Handlers/Events/ConnectTransactionToPiggyBank.php index cbb6176b91..070b6c2e97 100644 --- a/app/Handlers/Events/ConnectTransactionToPiggyBank.php +++ b/app/Handlers/Events/ConnectTransactionToPiggyBank.php @@ -12,7 +12,6 @@ declare(strict_types = 1); namespace FireflyIII\Handlers\Events; -use FireflyIII\Events\TransactionJournalStored; use FireflyIII\Events\TransactionStored; use FireflyIII\Models\PiggyBankEvent; use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; diff --git a/app/Helpers/Csv/Converter/AssetAccountIban.php b/app/Helpers/Csv/Converter/AssetAccountIban.php index a404355c33..2ed3fd7177 100644 --- a/app/Helpers/Csv/Converter/AssetAccountIban.php +++ b/app/Helpers/Csv/Converter/AssetAccountIban.php @@ -6,7 +6,7 @@ use Auth; use Carbon\Carbon; use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Models\Account; -use FireflyIII\Repositories\Account\AccountRepositoryInterface; +use FireflyIII\Models\AccountType; /** * Class AssetAccountIban @@ -21,9 +21,7 @@ class AssetAccountIban extends BasicConverter implements ConverterInterface */ public function convert(): Account { - /** @var AccountRepositoryInterface $repository */ - $repository = app(AccountRepositoryInterface::class); - $crud = app('FireflyIII\Crud\Account\AccountCrudInterface'); + $crud = app('FireflyIII\Crud\Account\AccountCrudInterface'); // is mapped? Then it's easy! if (isset($this->mapped[$this->index][$this->value])) { @@ -34,7 +32,7 @@ class AssetAccountIban extends BasicConverter implements ConverterInterface if (strlen($this->value) > 0) { - $account = $this->searchOrCreate($repository, $crud); + $account = $this->searchOrCreate($crud); return $account; } @@ -43,15 +41,14 @@ class AssetAccountIban extends BasicConverter implements ConverterInterface } /** - * @param AccountRepositoryInterface $repository - * @param AccountCrudInterface $crud + * @param AccountCrudInterface $crud * * @return Account */ - private function searchOrCreate(AccountRepositoryInterface $repository, AccountCrudInterface $crud) + private function searchOrCreate(AccountCrudInterface $crud) { // find or create new account: - $set = $repository->getAccountsByType(['Default account', 'Asset account']); + $set = $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET]); /** @var Account $entry */ foreach ($set as $entry) { if ($entry->iban == $this->value) { diff --git a/app/Helpers/Csv/Converter/AssetAccountName.php b/app/Helpers/Csv/Converter/AssetAccountName.php index 932ff621ec..b611ac3d5b 100644 --- a/app/Helpers/Csv/Converter/AssetAccountName.php +++ b/app/Helpers/Csv/Converter/AssetAccountName.php @@ -5,7 +5,7 @@ namespace FireflyIII\Helpers\Csv\Converter; use Auth; use Carbon\Carbon; use FireflyIII\Models\Account; -use FireflyIII\Repositories\Account\AccountRepositoryInterface; +use FireflyIII\Models\AccountType; /** * Class AssetAccountName @@ -20,9 +20,7 @@ class AssetAccountName extends BasicConverter implements ConverterInterface */ public function convert(): Account { - /** @var AccountRepositoryInterface $repository */ - $repository = app(AccountRepositoryInterface::class); - $crud = app('FireflyIII\Crud\Account\AccountCrudInterface'); + $crud = app('FireflyIII\Crud\Account\AccountCrudInterface'); if (isset($this->mapped[$this->index][$this->value])) { $account = $crud->find(intval($this->mapped[$this->index][$this->value])); @@ -30,7 +28,7 @@ class AssetAccountName extends BasicConverter implements ConverterInterface return $account; } - $set = $repository->getAccountsByType(['Default account', 'Asset account']); + $set = $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET]); /** @var Account $entry */ foreach ($set as $entry) { if ($entry->name == $this->value) { diff --git a/app/Helpers/Csv/Converter/AssetAccountNumber.php b/app/Helpers/Csv/Converter/AssetAccountNumber.php index 550d7d7e63..dbf82e148a 100644 --- a/app/Helpers/Csv/Converter/AssetAccountNumber.php +++ b/app/Helpers/Csv/Converter/AssetAccountNumber.php @@ -14,7 +14,7 @@ namespace FireflyIII\Helpers\Csv\Converter; use Auth; use Carbon\Carbon; use FireflyIII\Models\Account; -use FireflyIII\Repositories\Account\AccountRepositoryInterface; +use FireflyIII\Models\AccountType; /** * Class AssetAccountNumber @@ -29,9 +29,7 @@ class AssetAccountNumber extends BasicConverter implements ConverterInterface */ public function convert(): Account { - /** @var AccountRepositoryInterface $repository */ - $repository = app(AccountRepositoryInterface::class); - $crud = app('FireflyIII\Crud\Account\AccountCrudInterface'); + $crud = app('FireflyIII\Crud\Account\AccountCrudInterface'); // is mapped? Then it's easy! if (isset($this->mapped[$this->index][$this->value])) { @@ -43,7 +41,7 @@ class AssetAccountNumber extends BasicConverter implements ConverterInterface $value = $this->value ?? ''; if (strlen($value) > 0) { // find or create new account: - $set = $repository->getAccountsByType(['Default account', 'Asset account']); + $set = $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET]); /** @var Account $entry */ foreach ($set as $entry) { $accountNumber = $entry->getMeta('accountNumber'); diff --git a/app/Helpers/Csv/Converter/OpposingAccountIban.php b/app/Helpers/Csv/Converter/OpposingAccountIban.php index 9108fde3fe..47b7f37d8e 100644 --- a/app/Helpers/Csv/Converter/OpposingAccountIban.php +++ b/app/Helpers/Csv/Converter/OpposingAccountIban.php @@ -2,6 +2,7 @@ declare(strict_types = 1); namespace FireflyIII\Helpers\Csv\Converter; +use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Models\Account; use FireflyIII\Repositories\Account\AccountRepositoryInterface; @@ -30,19 +31,19 @@ class OpposingAccountIban extends BasicConverter implements ConverterInterface return $account; } - return $this->findAccount($repository); + return $this->findAccount($crud); } /** - * @param AccountRepositoryInterface $repository + * @param AccountCrudInterface $crud * * @return Account|string */ - private function findAccount(AccountRepositoryInterface $repository) + private function findAccount(AccountCrudInterface $crud) { if (strlen($this->value) > 0) { - $set = $repository->getAccountsByType([]); + $set = $crud->getAccountsByType([]); /** @var Account $account */ foreach ($set as $account) { if ($account->iban == $this->value) { diff --git a/app/Helpers/Report/ReportHelper.php b/app/Helpers/Report/ReportHelper.php index 897ef97d4c..1e35554c72 100644 --- a/app/Helpers/Report/ReportHelper.php +++ b/app/Helpers/Report/ReportHelper.php @@ -14,7 +14,6 @@ use FireflyIII\Models\Bill; use FireflyIII\Models\Category; use FireflyIII\Models\Tag; use FireflyIII\Models\TransactionJournal; -use FireflyIII\Models\TransactionType; use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Bill\BillRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; @@ -23,7 +22,6 @@ use FireflyIII\Repositories\Tag\TagRepositoryInterface; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Query\JoinClause; use Illuminate\Support\Collection; -use Log; /** * Class ReportHelper diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 6ce37dfc89..7ab148520e 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -63,16 +63,16 @@ class AccountController extends Controller } /** - * @param ARI $repository - * @param Account $account + * @param AccountCrudInterface $crud + * @param Account $account * - * @return \Illuminate\View\View + * @return View */ - public function delete(ARI $repository, Account $account) + public function delete(AccountCrudInterface $crud, Account $account) { $typeName = config('firefly.shortNamesByFullName.' . $account->accountType->type); $subTitle = trans('firefly.delete_' . $typeName . '_account', ['name' => $account->name]); - $accountList = ExpandedForm::makeSelectListWithEmpty($repository->getAccountsByType([$account->accountType->type])); + $accountList = ExpandedForm::makeSelectListWithEmpty($crud->getAccountsByType([$account->accountType->type])); unset($accountList[$account->id]); // put previous url in session @@ -151,19 +151,19 @@ class AccountController extends Controller } /** - * @param ARI $repository - * @param $what + * @param AccountCrudInterface $crud + * @param string $what * - * @return \Illuminate\View\View + * @return View */ - public function index(ARI $repository, string $what) + public function index(AccountCrudInterface $crud, string $what) { $what = $what ?? 'asset'; $subTitle = trans('firefly.' . $what . '_accounts'); $subTitleIcon = config('firefly.subIconsByIdentifier.' . $what); $types = config('firefly.accountTypesByIdentifier.' . $what); - $accounts = $repository->getAccountsByType($types); + $accounts = $crud->getAccountsByType($types); $start = clone session('start', Carbon::now()->startOfMonth()); $end = clone session('end', Carbon::now()->endOfMonth()); $start->subDay(); diff --git a/app/Http/Controllers/BudgetController.php b/app/Http/Controllers/BudgetController.php index 61fcfa1057..864ed3c463 100644 --- a/app/Http/Controllers/BudgetController.php +++ b/app/Http/Controllers/BudgetController.php @@ -7,11 +7,12 @@ use Amount; use Auth; use Carbon\Carbon; use Config; +use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Http\Requests\BudgetFormRequest; +use FireflyIII\Models\AccountType; use FireflyIII\Models\Budget; use FireflyIII\Models\LimitRepetition; -use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Collection; @@ -149,12 +150,11 @@ class BudgetController extends Controller /** * @param BudgetRepositoryInterface $repository + * @param AccountCrudInterface $crud * - * @param ARI $accountRepository - * - * @return \Illuminate\View\View + * @return View */ - public function index(BudgetRepositoryInterface $repository, ARI $accountRepository) + public function index(BudgetRepositoryInterface $repository, AccountCrudInterface $crud) { $budgets = $repository->getActiveBudgets(); $inactive = $repository->getInactiveBudgets(); @@ -176,10 +176,10 @@ class BudgetController extends Controller $period = Navigation::periodShow($start, $range); $periodStart = $start->formatLocalized($this->monthAndDayFormat); $periodEnd = $end->formatLocalized($this->monthAndDayFormat); - $accounts = $accountRepository->getAccountsByType(['Default account', 'Asset account', 'Cash account']); + $accounts = $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET, AccountType::CASH]); $startAsString = $start->format('Y-m-d'); $endAsString = $end->format('Y-m-d'); - + // loop the budgets: /** @var Budget $budget */ foreach ($budgets as $budget) { diff --git a/app/Http/Controllers/Chart/AccountController.php b/app/Http/Controllers/Chart/AccountController.php index 04a933280c..177c572ef3 100644 --- a/app/Http/Controllers/Chart/AccountController.php +++ b/app/Http/Controllers/Chart/AccountController.php @@ -4,11 +4,11 @@ declare(strict_types = 1); namespace FireflyIII\Http\Controllers\Chart; use Carbon\Carbon; +use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Generator\Chart\Account\AccountChartGeneratorInterface; use FireflyIII\Http\Controllers\Controller; use FireflyIII\Models\Account; use FireflyIII\Models\AccountType; -use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI; use FireflyIII\Support\CacheProperties; use Illuminate\Support\Collection; use Preferences; @@ -39,11 +39,11 @@ class AccountController extends Controller /** * Shows the balances for all the user's expense accounts. * - * @param ARI $repository + * @param AccountCrudInterface $crud * - * @return \Symfony\Component\HttpFoundation\Response + * @return \Illuminate\Http\JsonResponse */ - public function expenseAccounts(ARI $repository) + public function expenseAccounts(AccountCrudInterface $crud) { $start = clone session('start', Carbon::now()->startOfMonth()); $end = clone session('end', Carbon::now()->endOfMonth()); @@ -55,7 +55,7 @@ class AccountController extends Controller if ($cache->has()) { return Response::json($cache->get()); } - $accounts = $repository->getAccountsByType(['Expense account', 'Beneficiary account']); + $accounts = $crud->getAccountsByType([AccountType::EXPENSE, AccountType::BENEFICIARY]); $start->subDay(); $ids = $accounts->pluck('id')->toArray(); @@ -88,11 +88,11 @@ class AccountController extends Controller /** * Shows the balances for all the user's frontpage accounts. * - * @param ARI $repository + * @param AccountCrudInterface $crud * - * @return \Symfony\Component\HttpFoundation\Response + * @return \Illuminate\Http\JsonResponse */ - public function frontpage(ARI $repository) + public function frontpage(AccountCrudInterface $crud) { $start = clone session('start', Carbon::now()->startOfMonth()); $end = clone session('end', Carbon::now()->endOfMonth()); @@ -108,8 +108,8 @@ class AccountController extends Controller return Response::json($cache->get()); } - $frontPage = Preferences::get('frontPageAccounts', $repository->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET])->pluck('id')->toArray()); - $accounts = $repository->getAccountsById($frontPage->data); + $frontPage = Preferences::get('frontPageAccounts', $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET])->pluck('id')->toArray()); + $accounts = $crud->getAccountsById($frontPage->data); foreach ($accounts as $account) { $balances = []; diff --git a/app/Http/Controllers/CsvController.php b/app/Http/Controllers/CsvController.php index 9a3c543780..2e5a7da88b 100644 --- a/app/Http/Controllers/CsvController.php +++ b/app/Http/Controllers/CsvController.php @@ -4,11 +4,12 @@ declare(strict_types = 1); namespace FireflyIII\Http\Controllers; use ExpandedForm; +use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Helpers\Csv\Data; use FireflyIII\Helpers\Csv\Importer; use FireflyIII\Helpers\Csv\WizardInterface; -use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI; +use FireflyIII\Models\AccountType; use Illuminate\Http\Request; use Input; use Log; @@ -158,11 +159,11 @@ class CsvController extends Controller * * STEP ONE * - * @param ARI $repository + * @param AccountCrudInterface $crud * * @return \Illuminate\View\View */ - public function index(ARI $repository) + public function index(AccountCrudInterface $crud) { $subTitle = trans('firefly.csv_import'); @@ -190,7 +191,7 @@ class CsvController extends Controller ]; // get a list of asset accounts: - $accounts = ExpandedForm::makeSelectList($repository->getAccountsByType(['Asset account', 'Default account'])); + $accounts = ExpandedForm::makeSelectList($crud->getAccountsByType([AccountType::ASSET, AccountType::DEFAULT])); // can actually upload? $uploadPossible = is_writable(storage_path('upload')); diff --git a/app/Http/Controllers/ExportController.php b/app/Http/Controllers/ExportController.php index 56e22bad77..fd5b06efd6 100644 --- a/app/Http/Controllers/ExportController.php +++ b/app/Http/Controllers/ExportController.php @@ -12,10 +12,12 @@ namespace FireflyIII\Http\Controllers; use Carbon\Carbon; use ExpandedForm; +use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Export\Processor; use FireflyIII\Http\Requests; use FireflyIII\Http\Requests\ExportFormRequest; +use FireflyIII\Models\AccountType; use FireflyIII\Models\ExportJob; use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI; use FireflyIII\Repositories\ExportJob\ExportJobRepositoryInterface as EJRI; @@ -86,13 +88,12 @@ class ExportController extends Controller } /** - * @param ARI $repository - * - * @param EJRI $jobs + * @param AccountCrudInterface $crud + * @param EJRI $jobs * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ - public function index(ARI $repository, EJRI $jobs) + public function index(AccountCrudInterface $crud, EJRI $jobs) { // create new export job. $job = $jobs->create(); @@ -100,7 +101,7 @@ class ExportController extends Controller $jobs->cleanup(); // does the user have shared accounts? - $accounts = $repository->getAccountsByType(['Default account', 'Asset account']); + $accounts = $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET]); $accountList = ExpandedForm::makeSelectList($accounts); $checked = array_keys($accountList); $formats = array_keys(config('firefly.export_formats')); diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index f3a4f06653..6d6167142f 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -4,6 +4,7 @@ namespace FireflyIII\Http\Controllers; use Artisan; use Carbon\Carbon; +use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Models\AccountType; use FireflyIII\Models\Tag; @@ -96,11 +97,12 @@ class HomeController extends Controller } /** - * @param ARI $repository + * @param ARI $repository + * @param AccountCrudInterface $crud * - * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View + * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View */ - public function index(ARI $repository) + public function index(ARI $repository, AccountCrudInterface $crud) { $types = config('firefly.accountTypesByIdentifier.asset'); $count = $repository->countAccounts($types); @@ -114,14 +116,14 @@ class HomeController extends Controller $mainTitleIcon = 'fa-fire'; $transactions = []; $frontPage = Preferences::get( - 'frontPageAccounts', $repository->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET])->pluck('id')->toArray() + 'frontPageAccounts', $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET])->pluck('id')->toArray() ); /** @var Carbon $start */ $start = session('start', Carbon::now()->startOfMonth()); /** @var Carbon $end */ $end = session('end', Carbon::now()->endOfMonth()); $showTour = Preferences::get('tour', true)->data; - $accounts = $repository->getAccountsById($frontPage->data); + $accounts = $crud->getAccountsById($frontPage->data); $savings = $repository->getSavingsAccounts($start, $end); $piggyBankAccounts = $repository->getPiggyBankAccounts($start, $end); diff --git a/app/Http/Controllers/JsonController.php b/app/Http/Controllers/JsonController.php index 35b3d571d6..c4914c0def 100644 --- a/app/Http/Controllers/JsonController.php +++ b/app/Http/Controllers/JsonController.php @@ -4,7 +4,9 @@ namespace FireflyIII\Http\Controllers; use Amount; use Carbon\Carbon; +use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Exceptions\FireflyException; +use FireflyIII\Models\AccountType; use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI; use FireflyIII\Repositories\Bill\BillRepositoryInterface; use FireflyIII\Repositories\Category\CategoryRepositoryInterface as CRI; @@ -85,11 +87,12 @@ class JsonController extends Controller } /** - * @param ARI $accountRepository + * @param ARI $accountRepository + * @param AccountCrudInterface $crud * - * @return \Symfony\Component\HttpFoundation\Response + * @return \Illuminate\Http\JsonResponse */ - public function boxIn(ARI $accountRepository) + public function boxIn(ARI $accountRepository, AccountCrudInterface $crud) { $start = session('start', Carbon::now()->startOfMonth()); $end = session('end', Carbon::now()->endOfMonth()); @@ -102,7 +105,7 @@ class JsonController extends Controller if ($cache->has()) { return Response::json($cache->get()); } - $accounts = $accountRepository->getAccountsByType(['Default account', 'Asset account', 'Cash account']); + $accounts = $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET, AccountType::CASH]); $amount = $accountRepository->earnedInPeriod($accounts, $start, $end); $data = ['box' => 'in', 'amount' => Amount::format($amount, false), 'amount_raw' => $amount]; $cache->store($data); @@ -111,11 +114,12 @@ class JsonController extends Controller } /** - * @param ARI $accountRepository + * @param ARI $accountRepository + * @param AccountCrudInterface $crud * * @return \Symfony\Component\HttpFoundation\Response */ - public function boxOut(ARI $accountRepository) + public function boxOut(ARI $accountRepository, AccountCrudInterface $crud) { $start = session('start', Carbon::now()->startOfMonth()); $end = session('end', Carbon::now()->endOfMonth()); @@ -129,7 +133,7 @@ class JsonController extends Controller return Response::json($cache->get()); } - $accounts = $accountRepository->getAccountsByType(['Default account', 'Asset account', 'Cash account']); + $accounts = $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET, AccountType::CASH]); $amount = $accountRepository->spentInPeriod($accounts, $start, $end); $data = ['box' => 'out', 'amount' => Amount::format($amount, false), 'amount_raw' => $amount]; @@ -169,13 +173,13 @@ class JsonController extends Controller /** * Returns a JSON list of all beneficiaries. * - * @param ARI $accountRepository + * @param AccountCrudInterface $crud * * @return \Illuminate\Http\JsonResponse */ - public function expenseAccounts(ARI $accountRepository) + public function expenseAccounts(AccountCrudInterface $crud) { - $list = $accountRepository->getAccountsByType(['Expense account', 'Beneficiary account']); + $list = $crud->getAccountsByType([AccountType::EXPENSE, AccountType::BENEFICIARY]); $return = []; foreach ($list as $entry) { $return[] = $entry->name; @@ -186,13 +190,13 @@ class JsonController extends Controller } /** - * @param ARI $accountRepository + * @param AccountCrudInterface $crud * * @return \Illuminate\Http\JsonResponse */ - public function revenueAccounts(ARI $accountRepository) + public function revenueAccounts(AccountCrudInterface $crud) { - $list = $accountRepository->getAccountsByType(['Revenue account']); + $list = $crud->getAccountsByType([AccountType::REVENUE]); $return = []; foreach ($list as $entry) { $return[] = $entry->name; diff --git a/app/Http/Controllers/PiggyBankController.php b/app/Http/Controllers/PiggyBankController.php index 7389b3cb57..0ec3e190c7 100644 --- a/app/Http/Controllers/PiggyBankController.php +++ b/app/Http/Controllers/PiggyBankController.php @@ -5,7 +5,9 @@ namespace FireflyIII\Http\Controllers; use Amount; use Carbon\Carbon; use ExpandedForm; +use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Http\Requests\PiggyBankFormRequest; +use FireflyIII\Models\AccountType; use FireflyIII\Models\PiggyBank; use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI; use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; @@ -59,15 +61,15 @@ class PiggyBankController extends Controller } /** - * @param ARI $repository + * @param AccountCrudInterface $crud * - * @return mixed + * @return View */ - public function create(ARI $repository) + public function create(AccountCrudInterface $crud) { $periods = config('firefly.piggy_bank_periods'); - $accounts = ExpandedForm::makeSelectList($repository->getAccountsByType(['Default account', 'Asset account'])); + $accounts = ExpandedForm::makeSelectList($crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET])); $subTitle = trans('firefly.new_piggy_bank'); $subTitleIcon = 'fa-plus'; @@ -117,16 +119,16 @@ class PiggyBankController extends Controller } /** - * @param ARI $repository - * @param PiggyBank $piggyBank + * @param AccountCrudInterface $crud + * @param PiggyBank $piggyBank * * @return View */ - public function edit(ARI $repository, PiggyBank $piggyBank) + public function edit(AccountCrudInterface $crud, PiggyBank $piggyBank) { $periods = config('firefly.piggy_bank_periods'); - $accounts = ExpandedForm::makeSelectList($repository->getAccountsByType(['Default account', 'Asset account'])); + $accounts = ExpandedForm::makeSelectList($crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET])); $subTitle = trans('firefly.update_piggy_title', ['name' => $piggyBank->name]); $subTitleIcon = 'fa-pencil'; $targetDate = null; diff --git a/app/Http/Controllers/PreferencesController.php b/app/Http/Controllers/PreferencesController.php index 333c0c7953..7b86e820c1 100644 --- a/app/Http/Controllers/PreferencesController.php +++ b/app/Http/Controllers/PreferencesController.php @@ -3,8 +3,9 @@ declare(strict_types = 1); namespace FireflyIII\Http\Controllers; use Auth; +use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Http\Requests\TokenFormRequest; -use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI; +use FireflyIII\Models\AccountType; use Input; use PragmaRX\Google2FA\Contracts\Google2FA; use Preferences; @@ -59,13 +60,13 @@ class PreferencesController extends Controller } /** - * @param ARI $repository + * @param AccountCrudInterface $crud * - * @return $this|\Illuminate\View\View + * @return View */ - public function index(ARI $repository) + public function index(AccountCrudInterface $crud) { - $accounts = $repository->getAccountsByType(['Default account', 'Asset account']); + $accounts = $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET]); $viewRangePref = Preferences::get('viewRange', '1M'); $viewRange = $viewRangePref->data; $frontPageAccounts = Preferences::get('frontPageAccounts', []); diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php index c5063ec10c..65983ba7b5 100644 --- a/app/Http/Controllers/ReportController.php +++ b/app/Http/Controllers/ReportController.php @@ -4,12 +4,14 @@ declare(strict_types = 1); namespace FireflyIII\Http\Controllers; use Carbon\Carbon; +use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Helpers\Report\AccountReportHelperInterface; use FireflyIII\Helpers\Report\BalanceReportHelperInterface; use FireflyIII\Helpers\Report\BudgetReportHelperInterface; use FireflyIII\Helpers\Report\ReportHelperInterface; use FireflyIII\Models\Account; +use FireflyIII\Models\AccountType; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; @@ -58,12 +60,11 @@ class ReportController extends Controller } /** - * @param ARI $repository + * @param AccountCrudInterface $crud * * @return View - * @internal param ReportHelperInterface $helper */ - public function index(ARI $repository) + public function index(AccountCrudInterface $crud) { /** @var Carbon $start */ $start = clone session('first'); @@ -71,7 +72,7 @@ class ReportController extends Controller $customFiscalYear = Preferences::get('customFiscalYear', 0)->data; // does the user have shared accounts? - $accounts = $repository->getAccountsByType(['Default account', 'Asset account']); + $accounts = $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET]); // get id's for quick links: $accountIds = []; /** @var Account $account */ diff --git a/app/Http/Controllers/RuleGroupController.php b/app/Http/Controllers/RuleGroupController.php index 488bbc7cc3..b12f8accfc 100644 --- a/app/Http/Controllers/RuleGroupController.php +++ b/app/Http/Controllers/RuleGroupController.php @@ -6,9 +6,11 @@ namespace FireflyIII\Http\Controllers; use Auth; use Carbon\Carbon; use ExpandedForm; +use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Http\Requests\RuleGroupFormRequest; 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; @@ -168,17 +170,15 @@ class RuleGroupController extends Controller } /** - * Shows a form for the user to select a range of transactions to execute this rulegroup for - * - * @param AccountRepositoryInterface $repository - * @param RuleGroup $ruleGroup + * @param AccountCrudInterface $crud + * @param RuleGroup $ruleGroup * * @return View */ - public function selectTransactions(AccountRepositoryInterface $repository, RuleGroup $ruleGroup) + public function selectTransactions(AccountCrudInterface $crud, RuleGroup $ruleGroup) { // does the user have shared accounts? - $accounts = $repository->getAccountsByType(['Default account', 'Asset account']); + $accounts = $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET]); $accountList = ExpandedForm::makeSelectList($accounts); $checkedAccounts = array_keys($accountList); $first = session('first')->format('Y-m-d'); diff --git a/app/Http/Middleware/IsAdmin.php b/app/Http/Middleware/IsAdmin.php index 0631b55965..918d03b87d 100644 --- a/app/Http/Middleware/IsAdmin.php +++ b/app/Http/Middleware/IsAdmin.php @@ -11,7 +11,6 @@ declare(strict_types = 1); */ - declare(strict_types = 1); namespace FireflyIII\Http\Middleware; diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 6b1b58f54f..f816a055bc 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -31,29 +31,29 @@ class EventServiceProvider extends ServiceProvider ], - 'FireflyIII\Events\BudgetLimitStored' => [ + 'FireflyIII\Events\BudgetLimitStored' => [ 'FireflyIII\Handlers\Events\BudgetLimitEventHandler@store', ], - 'FireflyIII\Events\BudgetLimitUpdated' => [ + 'FireflyIII\Events\BudgetLimitUpdated' => [ 'FireflyIII\Handlers\Events\BudgetLimitEventHandler@update', ], - 'FireflyIII\Events\TransactionStored' => [ + 'FireflyIII\Events\TransactionStored' => [ 'FireflyIII\Handlers\Events\ConnectTransactionToPiggyBank', ], - 'FireflyIII\Events\TransactionJournalStored' => [ + 'FireflyIII\Events\TransactionJournalStored' => [ 'FireflyIII\Handlers\Events\ScanForBillsAfterStore', 'FireflyIII\Handlers\Events\ConnectJournalToPiggyBank', 'FireflyIII\Handlers\Events\FireRulesForStore', ], - 'Illuminate\Auth\Events\Logout' => [ + 'Illuminate\Auth\Events\Logout' => [ 'FireflyIII\Handlers\Events\UserEventListener@onUserLogout', ], - 'FireflyIII\Events\UserRegistration' => [ + 'FireflyIII\Events\UserRegistration' => [ 'FireflyIII\Handlers\Events\SendRegistrationMail', 'FireflyIII\Handlers\Events\AttachUserRole', 'FireflyIII\Handlers\Events\UserConfirmation@sendConfirmation', ], - 'FireflyIII\Events\ResendConfirmation' => [ + 'FireflyIII\Events\ResendConfirmation' => [ 'FireflyIII\Handlers\Events\UserConfirmation@resendConfirmation', ], ]; diff --git a/app/Providers/RuleServiceProvider.php b/app/Providers/RuleServiceProvider.php index 98e1932030..b208ca39b7 100644 --- a/app/Providers/RuleServiceProvider.php +++ b/app/Providers/RuleServiceProvider.php @@ -2,7 +2,6 @@ declare(strict_types = 1); - namespace FireflyIII\Providers; use FireflyIII\Exceptions\FireflyException; diff --git a/app/Repositories/Account/AccountRepository.php b/app/Repositories/Account/AccountRepository.php index 76a180a854..2462f3f0e1 100644 --- a/app/Repositories/Account/AccountRepository.php +++ b/app/Repositories/Account/AccountRepository.php @@ -205,63 +205,6 @@ class AccountRepository implements AccountRepositoryInterface return $this->user->accounts()->whereIn('id', $ids)->get(['accounts.*']); } - /** - * @param array $accountIds - * - * @return Collection - */ - public function getAccountsById(array $accountIds): Collection - { - /** @var Collection $result */ - $query = $this->user->accounts()->with( - ['accountmeta' => function (HasMany $query) { - $query->where('name', 'accountRole'); - }] - ); - - 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 - * - * @return Collection - */ - public function getAccountsByType(array $types): Collection - { - /** @var Collection $result */ - $query = $this->user->accounts()->with( - ['accountmeta' => function (HasMany $query) { - $query->where('name', 'accountRole'); - }] - ); - if (count($types) > 0) { - $query->accountTypeIn($types); - } - - $result = $query->get(['accounts.*']); - - $result = $result->sortBy( - function (Account $account) { - return strtolower($account->name); - } - ); - - return $result; - } - /** * @param TransactionJournal $journal * @param Account $account diff --git a/app/Repositories/Account/AccountRepositoryInterface.php b/app/Repositories/Account/AccountRepositoryInterface.php index cd1393125b..76f8e718d0 100644 --- a/app/Repositories/Account/AccountRepositoryInterface.php +++ b/app/Repositories/Account/AccountRepositoryInterface.php @@ -5,7 +5,6 @@ namespace FireflyIII\Repositories\Account; use Carbon\Carbon; use FireflyIII\Models\Account; -use FireflyIII\Models\AccountMeta; use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionJournal; use Illuminate\Support\Collection; @@ -79,20 +78,6 @@ interface AccountRepositoryInterface */ public function get(array $ids): Collection; - /** - * @param array $accountIds - * - * @return Collection - */ - public function getAccountsById(array $accountIds): Collection; - - /** - * @param array $types - * - * @return Collection - */ - public function getAccountsByType(array $types): Collection; - /** * @param TransactionJournal $journal * @param Account $account @@ -203,5 +188,5 @@ interface AccountRepositoryInterface * @return string */ public function spentInPeriod(Collection $accounts, Carbon $start, Carbon $end): string; - + } diff --git a/app/Repositories/Category/CategoryRepository.php b/app/Repositories/Category/CategoryRepository.php index e647b7aee0..f552aeff8c 100644 --- a/app/Repositories/Category/CategoryRepository.php +++ b/app/Repositories/Category/CategoryRepository.php @@ -241,11 +241,11 @@ class CategoryRepository implements CategoryRepositoryInterface // that should do it: $first = $query->get(TransactionJournal::queryFields()); - + // then collection transactions (harder) - $query = $this->user->transactionjournals()->distinct() - ->leftJoin('transactions', 'transaction_journals.id', '=', 'transactions.transaction_journal_id') - ->leftJoin('category_transaction', 'category_transaction.transaction_id', '=', 'transactions.id'); + $query = $this->user->transactionjournals()->distinct() + ->leftJoin('transactions', 'transaction_journals.id', '=', 'transactions.transaction_journal_id') + ->leftJoin('category_transaction', 'category_transaction.transaction_id', '=', 'transactions.id'); if (count($types) > 0) { $query->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id'); diff --git a/app/Rules/Actions/SetBudget.php b/app/Rules/Actions/SetBudget.php index 28f96aefa4..a94081bfbc 100644 --- a/app/Rules/Actions/SetBudget.php +++ b/app/Rules/Actions/SetBudget.php @@ -56,7 +56,7 @@ class SetBudget implements ActionInterface if (!is_null($budget)) { $journal->budgets()->sync([$budget->id]); } - + return true; } } diff --git a/app/Rules/Triggers/FromAccountContains.php b/app/Rules/Triggers/FromAccountContains.php index 49781144bf..d07b768ffa 100644 --- a/app/Rules/Triggers/FromAccountContains.php +++ b/app/Rules/Triggers/FromAccountContains.php @@ -59,7 +59,7 @@ final class FromAccountContains extends AbstractTrigger implements TriggerInterf foreach (TransactionJournal::sourceAccountList($journal) as $account) { $fromAccountName .= strtolower($account->name); } - + $search = strtolower($this->triggerValue); $strpos = strpos($fromAccountName, $search); diff --git a/app/Rules/Triggers/FromAccountIs.php b/app/Rules/Triggers/FromAccountIs.php index 473c123eaf..88692ee544 100644 --- a/app/Rules/Triggers/FromAccountIs.php +++ b/app/Rules/Triggers/FromAccountIs.php @@ -59,7 +59,7 @@ final class FromAccountIs extends AbstractTrigger implements TriggerInterface foreach (TransactionJournal::sourceAccountList($journal) as $account) { $name .= strtolower($account->name); } - + $search = strtolower($this->triggerValue); if ($name == $search) { diff --git a/app/Rules/Triggers/ToAccountIs.php b/app/Rules/Triggers/ToAccountIs.php index 4c3649a675..36682f4c19 100644 --- a/app/Rules/Triggers/ToAccountIs.php +++ b/app/Rules/Triggers/ToAccountIs.php @@ -59,8 +59,8 @@ final class ToAccountIs extends AbstractTrigger implements TriggerInterface foreach (TransactionJournal::destinationAccountList($journal) as $account) { $toAccountName .= strtolower($account->name); } - - $search = strtolower($this->triggerValue); + + $search = strtolower($this->triggerValue); if ($toAccountName == $search) { return true; diff --git a/app/Support/Models/TransactionJournalSupport.php b/app/Support/Models/TransactionJournalSupport.php index 1f4d3c7d90..f6d2a74b9d 100644 --- a/app/Support/Models/TransactionJournalSupport.php +++ b/app/Support/Models/TransactionJournalSupport.php @@ -13,7 +13,6 @@ namespace FireflyIII\Support\Models; use Carbon\Carbon; use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Models\Account; use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionJournal; use FireflyIII\Support\CacheProperties;