/** * @param PiggyBankRepositoryInterface $repository * @param AccountRepositoryInterface $accounts * @param PiggyBank $piggyBank * * @return \Illuminate\Http\RedirectResponse */ public function postAdd(PiggyBankRepositoryInterface $repository, AccountRepositoryInterface $accounts, PiggyBank $piggyBank) { $amount = round(floatval(Input::get('amount')), 2); $date = Session::get('end', Carbon::now()->endOfMonth()); $leftOnAccount = $accounts->leftOnAccount($piggyBank->account, $date); $savedSoFar = $piggyBank->currentRelevantRep()->currentamount; $leftToSave = $piggyBank->targetamount - $savedSoFar; $maxAmount = round(min($leftOnAccount, $leftToSave), 2); if ($amount <= $maxAmount) { $repetition = $piggyBank->currentRelevantRep(); $repetition->currentamount += $amount; $repetition->save(); // create event $repository->createEvent($piggyBank, $amount); Session::flash('success', 'Added ' . Amount::format($amount, false) . ' to "' . e($piggyBank->name) . '".'); Preferences::mark(); } else { Session::flash('error', 'Could not add ' . Amount::format($amount, false) . ' to "' . e($piggyBank->name) . '".'); } return Redirect::route('piggy-banks.index'); }
/** * @param PiggyBankRepositoryInterface $repository * @param ARI $accounts * @param PiggyBank $piggyBank * * @return \Illuminate\Http\RedirectResponse */ public function postAdd(PiggyBankRepositoryInterface $repository, ARI $accounts, PiggyBank $piggyBank) { bcscale(2); $amount = round(Input::get('amount'), 2); $date = Session::get('end', Carbon::now()->endOfMonth()); $leftOnAccount = $accounts->leftOnAccount($piggyBank->account, $date); $savedSoFar = $piggyBank->currentRelevantRep()->currentamount; $leftToSave = bcsub($piggyBank->targetamount, $savedSoFar); $maxAmount = round(min($leftOnAccount, $leftToSave), 2); if ($amount <= $maxAmount) { $repetition = $piggyBank->currentRelevantRep(); $repetition->currentamount = bcadd($repetition->currentamount, $amount); $repetition->save(); // create event $repository->createEvent($piggyBank, $amount); Session::flash('success', 'Added ' . Amount::format($amount, false) . ' to "' . e($piggyBank->name) . '".'); Preferences::mark(); } else { Log::error('Cannot add ' . $amount . ' because max amount is ' . $maxAmount . ' (left on account is ' . $leftOnAccount . ')'); Session::flash('error', 'Could not add ' . Amount::format($amount, false) . ' to "' . e($piggyBank->name) . '".'); } return redirect(route('piggy-banks.index')); }
/** * @param PiggyBankRepositoryInterface $repository * @param ARI $accounts * @param PiggyBank $piggyBank * * @return \Illuminate\Http\RedirectResponse */ public function postAdd(PiggyBankRepositoryInterface $repository, ARI $accounts, PiggyBank $piggyBank) { $amount = strval(round(Input::get('amount'), 2)); /** @var Carbon $date */ $date = session('end', Carbon::now()->endOfMonth()); $leftOnAccount = $accounts->leftOnAccount($piggyBank->account, $date); $savedSoFar = strval($piggyBank->currentRelevantRep()->currentamount); $leftToSave = bcsub($piggyBank->targetamount, $savedSoFar); $maxAmount = round(min($leftOnAccount, $leftToSave), 2); if ($amount <= $maxAmount) { $repetition = $piggyBank->currentRelevantRep(); $currentAmount = $repetition->currentamount ?? '0'; $repetition->currentamount = bcadd($currentAmount, $amount); $repetition->save(); // create event $repository->createEvent($piggyBank, $amount); Session::flash('success', strval(trans('firefly.added_amount_to_piggy', ['amount' => Amount::format($amount, false), 'name' => e($piggyBank->name)]))); Preferences::mark(); return redirect(route('piggy-banks.index')); } Log::error('Cannot add ' . $amount . ' because max amount is ' . $maxAmount . ' (left on account is ' . $leftOnAccount . ')'); Session::flash('error', strval(trans('firefly.cannot_add_amount_piggy', ['amount' => Amount::format($amount, false), 'name' => e($piggyBank->name)]))); return redirect(route('piggy-banks.index')); }