Added the ability to manually add or remove money from piggy banks (issue #6) [skip ci]

This commit is contained in:
James Cole
2014-08-17 08:45:22 +02:00
parent d645a38aec
commit e4f04583a3
10 changed files with 245 additions and 32 deletions

View File

@@ -69,7 +69,51 @@ class EloquentPiggybankRepository implements PiggybankRepositoryInterface
*/
public function get()
{
return \Auth::user()->piggybanks()->with(['account', 'piggybankrepetitions'])->get();
$piggies = \Auth::user()->piggybanks()->with(['account', 'piggybankrepetitions'])->get();
foreach($piggies as $pig) {
$pig->leftInAccount = $this->leftOnAccount($pig->account);
}
return $piggies;
}
/**
* @param \Account $account
*
* @return mixed|void
*/
public function leftOnAccount(\Account $account)
{
$balance = $account->balance();
/** @var \Piggybank $p */
foreach ($account->piggybanks()->get() as $p) {
$balance -= $p->currentRelevantRep()->currentamount;
}
return $balance;
}
/**
* @param \Piggybank $piggyBank
* @param $amount
*
* @return bool|mixed
*/
public function modifyAmount(\Piggybank $piggyBank, $amount)
{
$rep = $piggyBank->currentRelevantRep();
\Log::debug('Amount before: ' . $rep->currentamount);
$rep->currentamount += $amount;
\Log::debug('Amount after: ' . $rep->currentamount);
\Log::debug('validates: ' . $rep->validate());
\Log::debug(print_r($rep->toArray(),true));
$rep->save();
return true;
}
/**
@@ -182,18 +226,4 @@ class EloquentPiggybankRepository implements PiggybankRepositoryInterface
}
/**
* @param \Piggybank $piggyBank
* @param $amount
*
* @return mixed|void
*/
public function updateAmount(\Piggybank $piggyBank, $amount)
{
$piggyBank->amount = floatval($amount);
if ($piggyBank->validate()) {
$piggyBank->save();
}
}
}

View File

@@ -45,6 +45,23 @@ interface PiggybankRepositoryInterface
*/
public function get();
/**
* Will tell you how much money is left on this account.
*
* @param \Account $account
*
* @return mixed
*/
public function leftOnAccount(\Account $account);
/**
* @param \Piggybank $piggyBank
* @param $amount
*
* @return mixed
*/
public function modifyAmount(\Piggybank $piggyBank, $amount);
/**
* @param $data
*
@@ -60,12 +77,5 @@ interface PiggybankRepositoryInterface
*/
public function update(\Piggybank $piggy, $data);
/**
* @param \Piggybank $piggyBank
* @param $amount
*
* @return mixed
*/
public function updateAmount(\Piggybank $piggyBank, $amount);
}

View File

@@ -52,12 +52,15 @@ class EloquentPiggybankTrigger
$reps = $piggy->piggybankrepetitions()->get();
/** @var \PiggybankRepetition $rep */
foreach ($reps as $rep) {
$sum = \Transaction::where('piggybank_id', $piggy->id)->leftJoin(
if ($rep->currentamount == 0) {
$sum = \Transaction::where('piggybank_id', $piggy->id)->leftJoin(
'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id'
)->where('transaction_journals.date', '>=', $rep->startdate->format('Y-m-d'))->where(
'transaction_journals.date', '<=', $rep->targetdate->format('Y-m-d')
)->sum('transactions.amount');
$rep->currentamount = floatval($sum);
'transaction_journals.date', '<=', $rep->targetdate->format('Y-m-d')
)->sum('transactions.amount');
$rep->currentamount = floatval($sum);
}
$rep->save();