From 40441de5456b648a2c658ab359e1451c25447a02 Mon Sep 17 00:00:00 2001 From: James Cole Date: Fri, 30 Aug 2019 08:15:09 +0200 Subject: [PATCH] Move method to correct repository. --- .../Controllers/Chart/BudgetController.php | 7 ++- .../Controllers/Report/BudgetController.php | 6 ++- app/Repositories/Budget/BudgetRepository.php | 46 ----------------- .../Budget/BudgetRepositoryInterface.php | 9 ---- .../Budget/NoBudgetRepository.php | 51 ++++++++++++++++++- .../Budget/NoBudgetRepositoryInterface.php | 12 +++++ 6 files changed, 73 insertions(+), 58 deletions(-) diff --git a/app/Http/Controllers/Chart/BudgetController.php b/app/Http/Controllers/Chart/BudgetController.php index 1c88094adc..c1eacec02d 100644 --- a/app/Http/Controllers/Chart/BudgetController.php +++ b/app/Http/Controllers/Chart/BudgetController.php @@ -32,6 +32,7 @@ use FireflyIII\Models\BudgetLimit; use FireflyIII\Models\TransactionType; use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; +use FireflyIII\Repositories\Budget\NoBudgetRepositoryInterface; use FireflyIII\Repositories\Budget\OperationsRepositoryInterface; use FireflyIII\Support\CacheProperties; use FireflyIII\Support\Http\Controllers\AugumentData; @@ -55,6 +56,9 @@ class BudgetController extends Controller /** @var BudgetLimitRepositoryInterface */ private $blRepository; + /** @var NoBudgetRepositoryInterface */ + private $nbRepository; + /** * BudgetController constructor. * @@ -70,6 +74,7 @@ class BudgetController extends Controller $this->repository = app(BudgetRepositoryInterface::class); $this->opsRepository = app(OperationsRepositoryInterface::class); $this->blRepository = app(BudgetLimitRepositoryInterface::class); + $this->nbRepository = app(NoBudgetRepositoryInterface::class); return $next($request); } @@ -453,7 +458,7 @@ class BudgetController extends Controller // the expenses: $periods = app('navigation')->listOfPeriods($start, $end); - $entries = $this->repository->getNoBudgetPeriodReport($accounts, $start, $end); + $entries = $this->nbRepository->getNoBudgetPeriodReport($accounts, $start, $end); $chartData = []; // join them: diff --git a/app/Http/Controllers/Report/BudgetController.php b/app/Http/Controllers/Report/BudgetController.php index 825883d785..13bb1f6aab 100644 --- a/app/Http/Controllers/Report/BudgetController.php +++ b/app/Http/Controllers/Report/BudgetController.php @@ -26,6 +26,7 @@ use Carbon\Carbon; use FireflyIII\Helpers\Report\BudgetReportHelperInterface; use FireflyIII\Http\Controllers\Controller; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; +use FireflyIII\Repositories\Budget\NoBudgetRepositoryInterface; use FireflyIII\Repositories\Budget\OperationsRepositoryInterface; use FireflyIII\Support\CacheProperties; use FireflyIII\Support\Http\Controllers\BasicDataSupport; @@ -103,10 +104,13 @@ class BudgetController extends Controller /** @var OperationsRepositoryInterface $opsRepository */ $opsRepository= app(OperationsRepositoryInterface::class); + /** @var NoBudgetRepositoryInterface $nbRepository */ + $nbRepository = app(NoBudgetRepositoryInterface::class); + $budgets = $repository->getBudgets(); $data = $opsRepository->getBudgetPeriodReport($budgets, $accounts, $start, $end); - $noBudget = $repository->getNoBudgetPeriodReport($accounts, $start, $end); // append report data for "no budget" + $noBudget = $nbRepository->getNoBudgetPeriodReport($accounts, $start, $end); // append report data for "no budget" $data = array_merge($data, $noBudget); $report = $this->filterPeriodReport($data); diff --git a/app/Repositories/Budget/BudgetRepository.php b/app/Repositories/Budget/BudgetRepository.php index 8908bdfedd..d9a5a9071f 100644 --- a/app/Repositories/Budget/BudgetRepository.php +++ b/app/Repositories/Budget/BudgetRepository.php @@ -242,52 +242,6 @@ class BudgetRepository implements BudgetRepositoryInterface return $set; } - /** - * @param Collection $accounts - * @param Carbon $start - * @param Carbon $end - * - * @return array - */ - public function getNoBudgetPeriodReport(Collection $accounts, Carbon $start, Carbon $end): array - { - $carbonFormat = Navigation::preferredCarbonFormat($start, $end); - - /** @var GroupCollectorInterface $collector */ - $collector = app(GroupCollectorInterface::class); - - $collector->setAccounts($accounts)->setRange($start, $end); - $collector->setTypes([TransactionType::WITHDRAWAL]); - $collector->withoutBudget(); - $journals = $collector->getExtractedJournals(); - $data = []; - - /** @var array $journal */ - foreach ($journals as $journal) { - $currencyId = (int)$journal['currency_id']; - - $data[$currencyId] = $data[$currencyId] ?? [ - 'id' => 0, - 'name' => sprintf('%s (%s)', trans('firefly.no_budget'), $journal['currency_name']), - 'sum' => '0', - 'currency_id' => $currencyId, - 'currency_code' => $journal['currency_code'], - 'currency_name' => $journal['currency_name'], - 'currency_symbol' => $journal['currency_symbol'], - 'currency_decimal_places' => $journal['currency_decimal_places'], - 'entries' => [], - ]; - $date = $journal['date']->format($carbonFormat); - - if (!isset($data[$currencyId]['entries'][$date])) { - $data[$currencyId]['entries'][$date] = '0'; - } - $data[$currencyId]['entries'][$date] = bcadd($data[$currencyId]['entries'][$date], $journal['amount']); - } - - return $data; - } - /** * @param string $query * diff --git a/app/Repositories/Budget/BudgetRepositoryInterface.php b/app/Repositories/Budget/BudgetRepositoryInterface.php index ebbf27e04d..27a3321cee 100644 --- a/app/Repositories/Budget/BudgetRepositoryInterface.php +++ b/app/Repositories/Budget/BudgetRepositoryInterface.php @@ -107,15 +107,6 @@ interface BudgetRepositoryInterface */ public function getInactiveBudgets(): Collection; - /** - * @param Collection $accounts - * @param Carbon $start - * @param Carbon $end - * - * @return array - */ - public function getNoBudgetPeriodReport(Collection $accounts, Carbon $start, Carbon $end): array; - /** * @param string $query * diff --git a/app/Repositories/Budget/NoBudgetRepository.php b/app/Repositories/Budget/NoBudgetRepository.php index aed1346123..5dff50a5e2 100644 --- a/app/Repositories/Budget/NoBudgetRepository.php +++ b/app/Repositories/Budget/NoBudgetRepository.php @@ -24,7 +24,11 @@ declare(strict_types=1); namespace FireflyIII\Repositories\Budget; +use Carbon\Carbon; +use FireflyIII\Helpers\Collector\GroupCollectorInterface; +use FireflyIII\Models\TransactionType; use FireflyIII\User; +use Illuminate\Support\Collection; use Log; /** @@ -36,7 +40,6 @@ class NoBudgetRepository implements NoBudgetRepositoryInterface /** @var User */ private $user; - /** * Constructor. */ @@ -48,6 +51,52 @@ class NoBudgetRepository implements NoBudgetRepositoryInterface } } + /** + * @param Collection $accounts + * @param Carbon $start + * @param Carbon $end + * + * @return array + */ + public function getNoBudgetPeriodReport(Collection $accounts, Carbon $start, Carbon $end): array + { + $carbonFormat = app('navigation')->preferredCarbonFormat($start, $end); + + /** @var GroupCollectorInterface $collector */ + $collector = app(GroupCollectorInterface::class); + + $collector->setAccounts($accounts)->setRange($start, $end); + $collector->setTypes([TransactionType::WITHDRAWAL]); + $collector->withoutBudget(); + $journals = $collector->getExtractedJournals(); + $data = []; + + /** @var array $journal */ + foreach ($journals as $journal) { + $currencyId = (int)$journal['currency_id']; + + $data[$currencyId] = $data[$currencyId] ?? [ + 'id' => 0, + 'name' => sprintf('%s (%s)', trans('firefly.no_budget'), $journal['currency_name']), + 'sum' => '0', + 'currency_id' => $currencyId, + 'currency_code' => $journal['currency_code'], + 'currency_name' => $journal['currency_name'], + 'currency_symbol' => $journal['currency_symbol'], + 'currency_decimal_places' => $journal['currency_decimal_places'], + 'entries' => [], + ]; + $date = $journal['date']->format($carbonFormat); + + if (!isset($data[$currencyId]['entries'][$date])) { + $data[$currencyId]['entries'][$date] = '0'; + } + $data[$currencyId]['entries'][$date] = bcadd($data[$currencyId]['entries'][$date], $journal['amount']); + } + + return $data; + } + /** * @param User $user */ diff --git a/app/Repositories/Budget/NoBudgetRepositoryInterface.php b/app/Repositories/Budget/NoBudgetRepositoryInterface.php index 4856c83274..ed83ae10ac 100644 --- a/app/Repositories/Budget/NoBudgetRepositoryInterface.php +++ b/app/Repositories/Budget/NoBudgetRepositoryInterface.php @@ -24,7 +24,9 @@ declare(strict_types=1); namespace FireflyIII\Repositories\Budget; +use Carbon\Carbon; use FireflyIII\User; +use Illuminate\Support\Collection; /** * Interface NoBudgetRepositoryInterface @@ -35,4 +37,14 @@ interface NoBudgetRepositoryInterface * @param User $user */ public function setUser(User $user): void; + + /** + * @param Collection $accounts + * @param Carbon $start + * @param Carbon $end + * + * @return array + * @deprecated + */ + public function getNoBudgetPeriodReport(Collection $accounts, Carbon $start, Carbon $end): array; } \ No newline at end of file