From fcb5e4eabc29ca7b8eb6203865c9ac032eb7ce90 Mon Sep 17 00:00:00 2001 From: James Cole Date: Mon, 10 Oct 2016 06:47:42 +0200 Subject: [PATCH] Moved leftOnAccount() --- app/Http/Controllers/PiggyBankController.php | 21 ++++++---------- app/Models/PiggyBank.php | 25 +++++++++++++++++-- .../Account/AccountRepository.php | 22 ---------------- .../Account/AccountRepositoryInterface.php | 9 ------- 4 files changed, 31 insertions(+), 46 deletions(-) diff --git a/app/Http/Controllers/PiggyBankController.php b/app/Http/Controllers/PiggyBankController.php index fe832390aa..dc577b4291 100644 --- a/app/Http/Controllers/PiggyBankController.php +++ b/app/Http/Controllers/PiggyBankController.php @@ -19,7 +19,6 @@ use FireflyIII\Crud\Account\AccountCrudInterface; use FireflyIII\Http\Requests\PiggyBankFormRequest; use FireflyIII\Models\AccountType; use FireflyIII\Models\PiggyBank; -use FireflyIII\Repositories\Account\AccountRepositoryInterface as ARI; use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; use Illuminate\Support\Collection; use Input; @@ -53,16 +52,15 @@ class PiggyBankController extends Controller /** * Add money to piggy bank * - * @param ARI $repository * @param PiggyBank $piggyBank * * @return View */ - public function add(ARI $repository, PiggyBank $piggyBank) + public function add(PiggyBank $piggyBank) { /** @var Carbon $date */ $date = session('end', Carbon::now()->endOfMonth()); - $leftOnAccount = $repository->leftOnAccount($piggyBank->account, $date); + $leftOnAccount = $piggyBank->leftOnAccount($date); $savedSoFar = $piggyBank->currentRelevantRep()->currentamount ?? '0'; $leftToSave = bcsub($piggyBank->targetamount, $savedSoFar); $maxAmount = min($leftOnAccount, $leftToSave); @@ -73,16 +71,15 @@ class PiggyBankController extends Controller /** * Add money to piggy bank (for mobile devices) * - * @param ARI $repository * @param PiggyBank $piggyBank * * @return View */ - public function addMobile(ARI $repository, PiggyBank $piggyBank) + public function addMobile(PiggyBank $piggyBank) { /** @var Carbon $date */ $date = session('end', Carbon::now()->endOfMonth()); - $leftOnAccount = $repository->leftOnAccount($piggyBank->account, $date); + $leftOnAccount = $piggyBank->leftOnAccount($date); $savedSoFar = $piggyBank->currentRelevantRep()->currentamount?? '0'; $leftToSave = bcsub($piggyBank->targetamount, $savedSoFar); $maxAmount = min($leftOnAccount, $leftToSave); @@ -185,12 +182,11 @@ class PiggyBankController extends Controller } /** - * @param ARI $repository * @param PiggyBankRepositoryInterface $piggyRepository * * @return View */ - public function index(ARI $repository, PiggyBankRepositoryInterface $piggyRepository) + public function index(PiggyBankRepositoryInterface $piggyRepository) { /** @var Collection $piggyBanks */ $piggyBanks = $piggyRepository->getPiggyBanks(); @@ -213,7 +209,7 @@ class PiggyBankController extends Controller $accounts[$account->id] = [ 'name' => $account->name, 'balance' => Steam::balanceIgnoreVirtual($account, $end), - 'leftForPiggyBanks' => $repository->leftOnAccount($account, $end), + 'leftForPiggyBanks' => $piggyBank->leftOnAccount($end), 'sumOfSaved' => strval($piggyBank->savedSoFar), 'sumOfTargets' => strval(round($piggyBank->targetamount, 2)), 'leftToSave' => $piggyBank->leftToSave, @@ -248,17 +244,16 @@ class PiggyBankController extends Controller /** * @param PiggyBankRepositoryInterface $repository - * @param ARI $accounts * @param PiggyBank $piggyBank * * @return \Illuminate\Http\RedirectResponse */ - public function postAdd(PiggyBankRepositoryInterface $repository, ARI $accounts, PiggyBank $piggyBank) + public function postAdd(PiggyBankRepositoryInterface $repository, PiggyBank $piggyBank) { $amount = strval(round(Input::get('amount'), 2)); /** @var Carbon $date */ $date = session('end', Carbon::now()->endOfMonth()); - $leftOnAccount = $accounts->leftOnAccount($piggyBank->account, $date); + $leftOnAccount = $piggyBank->leftOnAccount($date); $savedSoFar = strval($piggyBank->currentRelevantRep()->currentamount); $leftToSave = bcsub($piggyBank->targetamount, $savedSoFar); $maxAmount = round(min($leftOnAccount, $leftToSave), 2); diff --git a/app/Models/PiggyBank.php b/app/Models/PiggyBank.php index c784f8555f..f2d2ae4e50 100644 --- a/app/Models/PiggyBank.php +++ b/app/Models/PiggyBank.php @@ -13,9 +13,11 @@ declare(strict_types = 1); namespace FireflyIII\Models; +use Carbon\Carbon; use Crypt; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use Steam; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; /** @@ -105,8 +107,6 @@ class PiggyBank extends Model $this->currentRep = $rep; return $rep; - - } /** @@ -125,6 +125,27 @@ class PiggyBank extends Model return $value; } + /** + * + * @param Carbon $date + * + * @return string + */ + public function leftOnAccount(Carbon $date): string + { + + $balance = Steam::balanceIgnoreVirtual($this->account, $date); + /** @var PiggyBank $p */ + foreach ($this->account->piggyBanks as $piggyBank) { + $currentAmount = $piggyBank->currentRelevantRep()->currentamount ?? '0'; + + $balance = bcsub($balance, $currentAmount); + } + + return $balance; + + } + /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ diff --git a/app/Repositories/Account/AccountRepository.php b/app/Repositories/Account/AccountRepository.php index a1fa361844..beac239765 100644 --- a/app/Repositories/Account/AccountRepository.php +++ b/app/Repositories/Account/AccountRepository.php @@ -111,28 +111,6 @@ class AccountRepository implements AccountRepositoryInterface return $transaction; } - /** - * - * @param Account $account - * @param Carbon $date - * - * @return string - */ - public function leftOnAccount(Account $account, Carbon $date): string - { - - $balance = Steam::balanceIgnoreVirtual($account, $date); - /** @var PiggyBank $p */ - foreach ($account->piggyBanks()->get() as $p) { - $currentAmount = $p->currentRelevantRep()->currentamount ?? '0'; - - $balance = bcsub($balance, $currentAmount); - } - - return $balance; - - } - /** * Returns the date of the very last transaction in this account. * diff --git a/app/Repositories/Account/AccountRepositoryInterface.php b/app/Repositories/Account/AccountRepositoryInterface.php index 784d29df48..8416620654 100644 --- a/app/Repositories/Account/AccountRepositoryInterface.php +++ b/app/Repositories/Account/AccountRepositoryInterface.php @@ -60,15 +60,6 @@ interface AccountRepositoryInterface */ public function getFirstTransaction(TransactionJournal $journal, Account $account): Transaction; - /** - * - * @param Account $account - * @param Carbon $date - * - * @return string - */ - public function leftOnAccount(Account $account, Carbon $date): string; - /** * Returns the date of the very last transaction in this account. *