From ea984281b0cf04accecf6dcda63d9e7446e4599d Mon Sep 17 00:00:00 2001 From: James Cole Date: Thu, 30 Mar 2017 18:42:02 +0200 Subject: [PATCH] Should fix tests. --- app/Helpers/Report/PopupReport.php | 51 +++++++++++++++++++ app/Helpers/Report/PopupReportInterface.php | 18 ++++++- .../Controllers/Popup/ReportController.php | 35 +------------ 3 files changed, 70 insertions(+), 34 deletions(-) diff --git a/app/Helpers/Report/PopupReport.php b/app/Helpers/Report/PopupReport.php index ba1156eac0..58df239d0f 100644 --- a/app/Helpers/Report/PopupReport.php +++ b/app/Helpers/Report/PopupReport.php @@ -27,6 +27,7 @@ use Illuminate\Support\Collection; class PopupReport implements PopupReportInterface { + /** * @param Budget $budget * @param Account $account @@ -44,6 +45,25 @@ class PopupReport implements PopupReportInterface return $journals; } + /** + * @param Account $account + * @param array $attributes + * + * @return Collection + */ + public function balanceForNoBudget(Account $account, array $attributes): Collection + { + /** @var JournalCollectorInterface $collector */ + $collector = app(JournalCollectorInterface::class); + $collector + ->setAccounts(new Collection([$account])) + ->setTypes([TransactionType::WITHDRAWAL]) + ->setRange($attributes['startDate'], $attributes['endDate']) + ->withoutBudget(); + + return $collector->getJournals(); + } + /** * @param Budget $budget * @param array $attributes @@ -145,4 +165,35 @@ class PopupReport implements PopupReportInterface return $journals; } + + /** + * @param $account + * @param $attributes + * + * @return Collection + */ + public function balanceDifference($account, $attributes): Collection + { + // row that displays difference + /** @var JournalCollectorInterface $collector */ + $collector = app(JournalCollectorInterface::class); + $collector + ->setAccounts(new Collection([$account])) + ->setTypes([TransactionType::WITHDRAWAL]) + ->setRange($attributes['startDate'], $attributes['endDate']) + ->withoutBudget(); + $journals = $collector->getJournals(); + + + return $journals->filter( + function (Transaction $transaction) { + $tags = $transaction->transactionJournal->tags()->where('tagMode', 'balancingAct')->count(); + if ($tags === 0) { + return true; + } + + return false; + } + ); + } } \ No newline at end of file diff --git a/app/Helpers/Report/PopupReportInterface.php b/app/Helpers/Report/PopupReportInterface.php index ce566d08a8..79ca4be007 100644 --- a/app/Helpers/Report/PopupReportInterface.php +++ b/app/Helpers/Report/PopupReportInterface.php @@ -24,15 +24,31 @@ use Illuminate\Support\Collection; interface PopupReportInterface { + /** + * @param $account + * @param $attributes + * + * @return Collection + */ + public function balanceDifference($account, $attributes): Collection; + /** * @param Budget $budget * @param Account $account - * @param array $attributes + * @param array $attributes * * @return Collection */ public function balanceForBudget(Budget $budget, Account $account, array $attributes): Collection; + /** + * @param Account $account + * @param array $attributes + * + * @return Collection + */ + public function balanceForNoBudget(Account $account, array $attributes): Collection; + /** * @param Budget $budget * @param array $attributes diff --git a/app/Http/Controllers/Popup/ReportController.php b/app/Http/Controllers/Popup/ReportController.php index e31b136803..d557b554b2 100644 --- a/app/Http/Controllers/Popup/ReportController.php +++ b/app/Http/Controllers/Popup/ReportController.php @@ -17,17 +17,14 @@ namespace FireflyIII\Http\Controllers\Popup; use Carbon\Carbon; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Helpers\Collection\BalanceLine; -use FireflyIII\Helpers\Collector\JournalCollectorInterface; use FireflyIII\Helpers\Report\PopupReportInterface; use FireflyIII\Http\Controllers\Controller; -use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionType; use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Category\CategoryRepositoryInterface; use FireflyIII\Support\Binder\AccountList; use Illuminate\Http\Request; -use Illuminate\Support\Collection; use InvalidArgumentException; use Response; use View; @@ -128,7 +125,6 @@ class ReportController extends Controller $role = intval($attributes['role']); $budget = $this->budgetRepository->find(intval($attributes['budgetId'])); $account = $this->accountRepository->find(intval($attributes['accountId'])); - $types = [TransactionType::WITHDRAWAL]; switch (true) { case ($role === BalanceLine::ROLE_DEFAULTROLE && !is_null($budget->id)): @@ -137,39 +133,12 @@ class ReportController extends Controller break; case ($role === BalanceLine::ROLE_DEFAULTROLE && is_null($budget->id)): // normal row without a budget: - $journals = $this->popupHelper->balanceForNoBudget($account, $attributes); + $journals = $this->popupHelper->balanceForNoBudget($account, $attributes); $budget->name = strval(trans('firefly.no_budget')); - /** @var JournalCollectorInterface $collector */ - $collector = app(JournalCollectorInterface::class); - $collector - ->setAccounts(new Collection([$account])) - ->setTypes($types) - ->setRange($attributes['startDate'], $attributes['endDate']) - ->withoutBudget(); - $journals = $collector->getJournals(); break; case ($role === BalanceLine::ROLE_DIFFROLE): - // row that displays difference - /** @var JournalCollectorInterface $collector */ - $collector = app(JournalCollectorInterface::class); - $collector - ->setAccounts(new Collection([$account])) - ->setTypes($types) - ->setRange($attributes['startDate'], $attributes['endDate']) - ->withoutBudget(); - $journals = $collector->getJournals(); - + $journals = $this->popupHelper->balanceDifference($account, $attributes); $budget->name = strval(trans('firefly.leftUnbalanced')); - $journals = $journals->filter( - function (Transaction $transaction) { - $tags = $transaction->transactionJournal->tags()->where('tagMode', 'balancingAct')->count(); - if ($tags === 0) { - return true; - } - - return false; - } - ); break; case ($role === BalanceLine::ROLE_TAGROLE): // row with tag info.