From c2551fea697d611f8848be098157d2efcb14f3ae Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Mon, 1 Mar 2021 20:38:28 +0100
Subject: [PATCH] #583 - show feedback after deleting an account

---
 .../budgetmaster/accounts/AccountController.java    | 13 +++++++++++--
 src/main/resources/languages/base_de.properties     |  1 +
 src/main/resources/languages/base_en.properties     |  1 +
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java
index c36185022..e1ec54b73 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java
@@ -4,12 +4,17 @@ import de.deadlocker8.budgetmaster.controller.BaseController;
 import de.deadlocker8.budgetmaster.settings.SettingsService;
 import de.deadlocker8.budgetmaster.utils.Mappings;
 import de.deadlocker8.budgetmaster.utils.ResourceNotFoundException;
+import de.deadlocker8.budgetmaster.utils.WebRequestUtils;
+import de.deadlocker8.budgetmaster.utils.notification.Notification;
+import de.deadlocker8.budgetmaster.utils.notification.NotificationType;
+import de.thecodelabs.utils.util.Localization;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.FieldError;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.context.request.WebRequest;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Optional;
@@ -97,17 +102,21 @@ public class AccountController extends BaseController
 	}
 
 	@GetMapping("/{ID}/delete")
-	public String deleteAccountAndReferringTransactions(Model model, @PathVariable("ID") Integer ID)
+	public String deleteAccountAndReferringTransactions(WebRequest request, Model model, @PathVariable("ID") Integer ID)
 	{
 		// at least one account is required (to delete a sole account another one has to be created first)
+		final Account accountToDelete = accountService.getRepository().getOne(ID);
 		if(accountService.getRepository().findAllByType(AccountType.CUSTOM).size() > 1)
 		{
 			accountService.deleteAccount(ID);
+
+			WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.account.delete.success", accountToDelete.getName()), NotificationType.SUCCESS));
+
 			return "redirect:/accounts";
 		}
 
 		model.addAttribute("accounts", accountService.getAllAccountsAsc());
-		model.addAttribute("currentAccount", accountService.getRepository().getOne(ID));
+		model.addAttribute("currentAccount", accountToDelete);
 		model.addAttribute("accountNotDeletable", true);
 		model.addAttribute("settings", settingsService.getSettings());
 		return "accounts/accounts";
diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties
index 6006eed2a..09e9ad708 100644
--- a/src/main/resources/languages/base_de.properties
+++ b/src/main/resources/languages/base_de.properties
@@ -105,6 +105,7 @@ notification.category.delete.not.deletable=Die Kategorie mit der ID "{0}" ist ni
 info.title.account.delete=Konto löschen
 info.text.account.delete=Möchtest du das Konto "{0}" wirklich unwiderruflich löschen?<br>Hinweis: Diesem Konto sind {1} Buchungen zugeordnet. Beim Löschen des Kontos werden diese ebenfalls gelöscht!
 info.button.account.delete=Konto und Buchungen löschen
+notification.account.delete.success=Das Konto "{0}" wurde erfolgreich gelöscht.
 
 info.title.transaction.delete=Buchung löschen
 info.text.transaction.delete=Möchtest du die Buchung "{0}" wirklich unwiderruflich löschen?
diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties
index f4b555bd8..f1c559a2d 100644
--- a/src/main/resources/languages/base_en.properties
+++ b/src/main/resources/languages/base_en.properties
@@ -105,6 +105,7 @@ notification.category.delete.not.deletable=The category with id "{0}" is undelet
 info.title.account.delete=Delete Account
 info.text.account.delete=Do you really want to delete the account "{0}"? This can''t be undone.<br>Note: There are {1} transactions associated with this account. Deleting this account will delete all releated transactions too!
 info.button.account.delete=Delete Account and Transactions
+notification.account.delete.success=Successfully deleted account "{0}".
 
 info.title.transaction.delete=Delete Entry
 info.text.transaction.delete=Do you really want to delete the entry "{0}"? This can''t be undone.
-- 
GitLab