From 7bbfb692de78cf5bef3d3899a90bf73a6121f5a3 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 17 Feb 2018 10:47:32 +0100 Subject: [PATCH] Move code to repository. --- .../Controllers/Json/FrontpageController.php | 5 ++--- app/Http/Controllers/PiggyBankController.php | 11 ++++++----- app/Models/PiggyBank.php | 2 +- .../PiggyBank/PiggyBankRepository.php | 18 ++++++++++++++++++ .../PiggyBank/PiggyBankRepositoryInterface.php | 9 +++++++++ 5 files changed, 36 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/Json/FrontpageController.php b/app/Http/Controllers/Json/FrontpageController.php index f2d549bf6d..3aa2d1a30d 100644 --- a/app/Http/Controllers/Json/FrontpageController.php +++ b/app/Http/Controllers/Json/FrontpageController.php @@ -45,9 +45,8 @@ class FrontpageController extends Controller $info = []; /** @var PiggyBank $piggyBank */ foreach ($set as $piggyBank) { - $rep = $piggyBank->currentRelevantRep(); - $amount = strval($rep->currentamount); - if (null !== $rep->id && 1 === bccomp($amount, '0')) { + $amount = $repository->getCurrentAmount($piggyBank); + if (1 === bccomp($amount, '0')) { // percentage! $pct = round(($amount / $piggyBank->targetamount) * 100); diff --git a/app/Http/Controllers/PiggyBankController.php b/app/Http/Controllers/PiggyBankController.php index 1c88fc6dc5..7ba0315b5c 100644 --- a/app/Http/Controllers/PiggyBankController.php +++ b/app/Http/Controllers/PiggyBankController.php @@ -67,12 +67,12 @@ class PiggyBankController extends Controller * * @return View */ - public function add(PiggyBank $piggyBank) + public function add(PiggyBank $piggyBank, PiggyBankRepositoryInterface $repository) { /** @var Carbon $date */ $date = session('end', Carbon::now()->endOfMonth()); $leftOnAccount = $piggyBank->leftOnAccount($date); - $savedSoFar = $piggyBank->currentRelevantRep()->currentamount ?? '0'; + $savedSoFar = $repository->getCurrentAmount($piggyBank); $leftToSave = bcsub($piggyBank->targetamount, $savedSoFar); $maxAmount = min($leftOnAccount, $leftToSave); @@ -86,12 +86,12 @@ class PiggyBankController extends Controller * * @return View */ - public function addMobile(PiggyBank $piggyBank) + public function addMobile(PiggyBank $piggyBank, PiggyBankRepositoryInterface $repository) { /** @var Carbon $date */ $date = session('end', Carbon::now()->endOfMonth()); $leftOnAccount = $piggyBank->leftOnAccount($date); - $savedSoFar = $piggyBank->currentRelevantRep()->currentamount ?? '0'; + $savedSoFar = $repository->getCurrentAmount($piggyBank); $leftToSave = bcsub($piggyBank->targetamount, $savedSoFar); $maxAmount = min($leftOnAccount, $leftToSave); @@ -212,7 +212,8 @@ class PiggyBankController extends Controller Log::debug('Looping piggues'); /** @var PiggyBank $piggyBank */ foreach ($collection as $piggyBank) { - $piggyBank->savedSoFar = $piggyBank->currentRelevantRep()->currentamount ?? '0'; + + $piggyBank->savedSoFar = $piggyRepository->getCurrentAmount($piggyBank); $piggyBank->percentage = 0 !== bccomp('0', $piggyBank->savedSoFar) ? intval($piggyBank->savedSoFar / $piggyBank->targetamount * 100) : 0; $piggyBank->leftToSave = bcsub($piggyBank->targetamount, strval($piggyBank->savedSoFar)); $piggyBank->percentage = $piggyBank->percentage > 100 ? 100 : $piggyBank->percentage; diff --git a/app/Models/PiggyBank.php b/app/Models/PiggyBank.php index 2140c33b8b..d5e4cd3194 100644 --- a/app/Models/PiggyBank.php +++ b/app/Models/PiggyBank.php @@ -56,7 +56,7 @@ class PiggyBank extends Model /** @var array */ protected $dates = ['startdate', 'targetdate']; /** @var array */ - protected $fillable = ['name', 'account_id', 'order', 'targetamount', 'startdate', 'targetdate']; + protected $fillable = ['name', 'account_id', 'order', 'targetamount', 'startdate', 'targetdate', 'active']; /** @var array */ protected $hidden = ['targetamount_encrypted', 'encrypted']; diff --git a/app/Repositories/PiggyBank/PiggyBankRepository.php b/app/Repositories/PiggyBank/PiggyBankRepository.php index 1953be27e2..b837797901 100644 --- a/app/Repositories/PiggyBank/PiggyBankRepository.php +++ b/app/Repositories/PiggyBank/PiggyBankRepository.php @@ -163,6 +163,24 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface return new PiggyBank(); } + /** + * Get current amount saved in piggy bank. + * + * @param PiggyBank $piggyBank + * + * @return string + */ + public function getCurrentAmount(PiggyBank $piggyBank): string + { + /** @var PiggyBankRepetition $rep */ + $rep = $piggyBank->piggyBankRepetitions()->first(['piggy_bank_repetitions.*']); + if (null === $rep) { + return '0'; + } + + return strval($rep->currentamount); + } + /** * @param PiggyBank $piggyBank * diff --git a/app/Repositories/PiggyBank/PiggyBankRepositoryInterface.php b/app/Repositories/PiggyBank/PiggyBankRepositoryInterface.php index 93ae5f1e3c..d3a3211d25 100644 --- a/app/Repositories/PiggyBank/PiggyBankRepositoryInterface.php +++ b/app/Repositories/PiggyBank/PiggyBankRepositoryInterface.php @@ -102,6 +102,15 @@ interface PiggyBankRepositoryInterface */ public function find(int $piggyBankid): PiggyBank; + /** + * Get current amount saved in piggy bank. + * + * @param PiggyBank $piggyBank + * + * @return string + */ + public function getCurrentAmount(PiggyBank $piggyBank): string; + /** * Get all events. *