Esempio n. 1
0
 /**
  * @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');
 }
Esempio n. 2
0
 /**
  * @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'));
 }