Move code to repository.

This commit is contained in:
James Cole
2018-02-17 10:47:32 +01:00
parent c6da990748
commit 7bbfb692de
5 changed files with 36 additions and 9 deletions

View File

@@ -45,9 +45,8 @@ class FrontpageController extends Controller
$info = []; $info = [];
/** @var PiggyBank $piggyBank */ /** @var PiggyBank $piggyBank */
foreach ($set as $piggyBank) { foreach ($set as $piggyBank) {
$rep = $piggyBank->currentRelevantRep(); $amount = $repository->getCurrentAmount($piggyBank);
$amount = strval($rep->currentamount); if (1 === bccomp($amount, '0')) {
if (null !== $rep->id && 1 === bccomp($amount, '0')) {
// percentage! // percentage!
$pct = round(($amount / $piggyBank->targetamount) * 100); $pct = round(($amount / $piggyBank->targetamount) * 100);

View File

@@ -67,12 +67,12 @@ class PiggyBankController extends Controller
* *
* @return View * @return View
*/ */
public function add(PiggyBank $piggyBank) public function add(PiggyBank $piggyBank, PiggyBankRepositoryInterface $repository)
{ {
/** @var Carbon $date */ /** @var Carbon $date */
$date = session('end', Carbon::now()->endOfMonth()); $date = session('end', Carbon::now()->endOfMonth());
$leftOnAccount = $piggyBank->leftOnAccount($date); $leftOnAccount = $piggyBank->leftOnAccount($date);
$savedSoFar = $piggyBank->currentRelevantRep()->currentamount ?? '0'; $savedSoFar = $repository->getCurrentAmount($piggyBank);
$leftToSave = bcsub($piggyBank->targetamount, $savedSoFar); $leftToSave = bcsub($piggyBank->targetamount, $savedSoFar);
$maxAmount = min($leftOnAccount, $leftToSave); $maxAmount = min($leftOnAccount, $leftToSave);
@@ -86,12 +86,12 @@ class PiggyBankController extends Controller
* *
* @return View * @return View
*/ */
public function addMobile(PiggyBank $piggyBank) public function addMobile(PiggyBank $piggyBank, PiggyBankRepositoryInterface $repository)
{ {
/** @var Carbon $date */ /** @var Carbon $date */
$date = session('end', Carbon::now()->endOfMonth()); $date = session('end', Carbon::now()->endOfMonth());
$leftOnAccount = $piggyBank->leftOnAccount($date); $leftOnAccount = $piggyBank->leftOnAccount($date);
$savedSoFar = $piggyBank->currentRelevantRep()->currentamount ?? '0'; $savedSoFar = $repository->getCurrentAmount($piggyBank);
$leftToSave = bcsub($piggyBank->targetamount, $savedSoFar); $leftToSave = bcsub($piggyBank->targetamount, $savedSoFar);
$maxAmount = min($leftOnAccount, $leftToSave); $maxAmount = min($leftOnAccount, $leftToSave);
@@ -212,7 +212,8 @@ class PiggyBankController extends Controller
Log::debug('Looping piggues'); Log::debug('Looping piggues');
/** @var PiggyBank $piggyBank */ /** @var PiggyBank $piggyBank */
foreach ($collection as $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->percentage = 0 !== bccomp('0', $piggyBank->savedSoFar) ? intval($piggyBank->savedSoFar / $piggyBank->targetamount * 100) : 0;
$piggyBank->leftToSave = bcsub($piggyBank->targetamount, strval($piggyBank->savedSoFar)); $piggyBank->leftToSave = bcsub($piggyBank->targetamount, strval($piggyBank->savedSoFar));
$piggyBank->percentage = $piggyBank->percentage > 100 ? 100 : $piggyBank->percentage; $piggyBank->percentage = $piggyBank->percentage > 100 ? 100 : $piggyBank->percentage;

View File

@@ -56,7 +56,7 @@ class PiggyBank extends Model
/** @var array */ /** @var array */
protected $dates = ['startdate', 'targetdate']; protected $dates = ['startdate', 'targetdate'];
/** @var array */ /** @var array */
protected $fillable = ['name', 'account_id', 'order', 'targetamount', 'startdate', 'targetdate']; protected $fillable = ['name', 'account_id', 'order', 'targetamount', 'startdate', 'targetdate', 'active'];
/** @var array */ /** @var array */
protected $hidden = ['targetamount_encrypted', 'encrypted']; protected $hidden = ['targetamount_encrypted', 'encrypted'];

View File

@@ -163,6 +163,24 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
return new PiggyBank(); 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 * @param PiggyBank $piggyBank
* *

View File

@@ -102,6 +102,15 @@ interface PiggyBankRepositoryInterface
*/ */
public function find(int $piggyBankid): PiggyBank; 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. * Get all events.
* *