id . '.latestBalance'; } else { $key = 'account.' . $account->id . '.balanceOn' . $date->format('dmy'); } if (\Cache::has($key)) { return \Cache::get($key); } $date = is_null($date) ? Carbon::now() : $date; $balance = floatval( $account->transactions()->leftJoin( 'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id' )->where('transaction_journals.date', '<=', $date->format('Y-m-d'))->sum('transactions.amount') ); \Cache::put($key, $balance, 20160); return $balance; } /** * @param \Piggybank $piggyBank * @param \PiggybankRepetition $repetition * * @return int */ public function percentage(\Piggybank $piggyBank, \PiggybankRepetition $repetition) { $pct = $repetition->currentamount / $piggyBank->targetamount * 100; if ($pct > 100) { return 100; } else { return floor($pct); } } }