diff --git a/app/Http/Controllers/PiggyBank/EditController.php b/app/Http/Controllers/PiggyBank/EditController.php index b7b29683ae..9e001e66fd 100644 --- a/app/Http/Controllers/PiggyBank/EditController.php +++ b/app/Http/Controllers/PiggyBank/EditController.php @@ -63,6 +63,12 @@ class EditController extends Controller ); } + public function resetHistory(PiggyBank $piggyBank): RedirectResponse { + $this->piggyRepos->resetHistory($piggyBank); + session()->flash('success', (string) trans('firefly.piggy_history_reset')); + return redirect(route('piggy-banks.show', [$piggyBank->id])); + } + /** * Edit a piggy bank. * diff --git a/app/Repositories/PiggyBank/PiggyBankRepository.php b/app/Repositories/PiggyBank/PiggyBankRepository.php index dbead1a4af..ee30bac3f5 100644 --- a/app/Repositories/PiggyBank/PiggyBankRepository.php +++ b/app/Repositories/PiggyBank/PiggyBankRepository.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace FireflyIII\Repositories\PiggyBank; +use FireflyIII\Events\Model\PiggyBank\ChangedAmount; use FireflyIII\User; use Carbon\Carbon; use FireflyIII\Exceptions\FireflyException; @@ -438,4 +439,14 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface, UserGroupInte return $search->take($limit)->get(['piggy_banks.*']); } + + public function resetHistory(PiggyBank $piggyBank): void + { + $piggyBank->piggyBankEvents()->delete(); + foreach($piggyBank->accounts as $account) { + if(0 !== bccomp('0',$account->pivot->current_amount)) { + event(new ChangedAmount($piggyBank, $account->pivot->current_amount, null, null)); + } + } + } } diff --git a/app/Repositories/PiggyBank/PiggyBankRepositoryInterface.php b/app/Repositories/PiggyBank/PiggyBankRepositoryInterface.php index a6eff5b1b4..a1c9d05a12 100644 --- a/app/Repositories/PiggyBank/PiggyBankRepositoryInterface.php +++ b/app/Repositories/PiggyBank/PiggyBankRepositoryInterface.php @@ -33,6 +33,7 @@ use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\UserGroup; use FireflyIII\User; use Illuminate\Contracts\Auth\Authenticatable; +use Illuminate\Routing\Redirector; use Illuminate\Support\Collection; /** @@ -47,6 +48,8 @@ use Illuminate\Support\Collection; */ interface PiggyBankRepositoryInterface { + + public function resetHistory(PiggyBank $piggyBank): void; public function addAmount(PiggyBank $piggyBank, Account $account, string $amount, ?TransactionJournal $journal = null): bool; public function addAmountToPiggyBank(PiggyBank $piggyBank, string $amount, TransactionJournal $journal): void; diff --git a/public/v1/js/ff/piggy-banks/show.js b/public/v1/js/ff/piggy-banks/show.js index f6d41064ce..a6756992fb 100644 --- a/public/v1/js/ff/piggy-banks/show.js +++ b/public/v1/js/ff/piggy-banks/show.js @@ -24,4 +24,12 @@ $(function () { if (typeof(lineChart) === 'function' && typeof(piggyBankID) !== 'undefined') { lineChart('chart/piggy-bank/' + piggyBankID, 'piggy-bank-history'); } -}); \ No newline at end of file + + // on submit of logout button: + $('.reset-link').click(function(e) { + console.log('here we are'); + e.preventDefault(); + document.getElementById('reset-form').submit(); + return false; + }); +}); diff --git a/resources/lang/en_US/firefly.php b/resources/lang/en_US/firefly.php index d9cf68b16b..848a479212 100644 --- a/resources/lang/en_US/firefly.php +++ b/resources/lang/en_US/firefly.php @@ -2486,6 +2486,10 @@ return [ 'left_for_piggy_banks' => 'Left for piggy banks', 'sum_of_piggy_banks' => 'Sum of piggy banks', 'saved_so_far' => 'Saved so far', + 'saved_so_far_total' => 'Saved so far in total', + 'reset_history' => 'reset history', + 'reset_history_confirm' => 'Are you sure you want to reset the history of this piggy bank? This will make the chart match the piggy bank\'s amount again.', + 'piggy_history_reset' => 'The piggy bank history has been reset', 'left_to_save' => 'Left to save', 'suggested_amount' => 'Suggested monthly amount to save', 'add_money_to_piggy_title' => 'Add money to piggy bank ":name"', diff --git a/resources/views/piggy-banks/show.twig b/resources/views/piggy-banks/show.twig index 9bb716af79..6a5e58f3da 100644 --- a/resources/views/piggy-banks/show.twig +++ b/resources/views/piggy-banks/show.twig @@ -54,8 +54,20 @@ {% endif %} + {% for account in piggy.accounts %} +