From fc0202eb748b1ec0ca4105174643346d1d6945dd Mon Sep 17 00:00:00 2001 From: James Cole Date: Tue, 23 Feb 2021 18:49:54 +0100 Subject: [PATCH] Fix performance issues in budget controller. --- app/Http/Controllers/Budget/ShowController.php | 7 ++----- app/Support/Http/Controllers/AugumentData.php | 8 +++++--- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Budget/ShowController.php b/app/Http/Controllers/Budget/ShowController.php index e43f21602d..589a60f9a0 100644 --- a/app/Http/Controllers/Budget/ShowController.php +++ b/app/Http/Controllers/Budget/ShowController.php @@ -46,11 +46,8 @@ use Illuminate\View\View; class ShowController extends Controller { use PeriodOverview, AugumentData; - /** @var JournalRepositoryInterface */ - private $journalRepos; - - /** @var BudgetRepositoryInterface */ - private $repository; + private JournalRepositoryInterface $journalRepos; + private BudgetRepositoryInterface $repository; /** * ShowController constructor. diff --git a/app/Support/Http/Controllers/AugumentData.php b/app/Support/Http/Controllers/AugumentData.php index eb9002da70..6c1bcb637d 100644 --- a/app/Support/Http/Controllers/AugumentData.php +++ b/app/Support/Http/Controllers/AugumentData.php @@ -199,6 +199,7 @@ trait AugumentData /** @var BudgetLimitRepositoryInterface $blRepository */ $blRepository = app(BudgetLimitRepositoryInterface::class); + // properties for cache $cache = new CacheProperties; $cache->addProperty($start); @@ -207,18 +208,19 @@ trait AugumentData $cache->addProperty('get-limits'); if ($cache->has()) { - return $cache->get(); // @codeCoverageIgnore + return $cache->get(); // @codeCoverageIgnore } $set = $blRepository->getBudgetLimits($budget, $start, $end); $limits = new Collection(); $budgetCollection = new Collection([$budget]); + /** @var BudgetLimit $entry */ foreach ($set as $entry) { $currency = $entry->transactionCurrency; // clone because these objects change each other. - $currentStart = clone $start; - $currentEnd = clone $end; + $currentStart = clone $entry->start_date; + $currentEnd = clone $entry->end_date; $expenses = $opsRepository->sumExpenses($currentStart, $currentEnd, null, $budgetCollection, $currency); $spent = $expenses[(int)$currency->id]['sum'] ?? '0'; $entry->spent = $spent;