From 82e08f143a3e1293a494ec73e4003a9aac834f98 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Mon, 1 Mar 2021 20:32:34 +0100
Subject: [PATCH] #583 - show feedback after deleting a chart

---
 .../budgetmaster/charts/ChartController.java        | 13 ++++++++++++-
 src/main/resources/languages/base_de.properties     |  3 +++
 src/main/resources/languages/base_en.properties     |  3 +++
 3 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
index 32dd04805..4f4a2612e 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java
@@ -13,6 +13,10 @@ import de.deadlocker8.budgetmaster.transactions.Transaction;
 import de.deadlocker8.budgetmaster.transactions.TransactionService;
 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.joda.time.DateTime;
 import org.joda.time.format.ISODateTimeFormat;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +24,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.context.request.WebRequest;
 
 import java.util.List;
 import java.util.Optional;
@@ -182,11 +187,17 @@ public class ChartController extends BaseController
 	}
 
 	@GetMapping(value = "/{ID}/delete")
-	public String deleteChart(Model model, @PathVariable("ID") Integer ID)
+	public String deleteChart(WebRequest request, @PathVariable("ID") Integer ID)
 	{
 		if(chartService.isDeletable(ID))
 		{
+			final Chart chartToDelete = chartService.getRepository().getOne(ID);
 			chartService.getRepository().deleteById(ID);
+			WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.chart.delete.success", chartToDelete.getName()), NotificationType.SUCCESS));
+		}
+		else
+		{
+			WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.chart.delete.not.deletable", String.valueOf(ID)), NotificationType.ERROR));
 		}
 
 		return "redirect:/charts/manage";
diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties
index b66ae34de..7afbe45ef 100644
--- a/src/main/resources/languages/base_de.properties
+++ b/src/main/resources/languages/base_de.properties
@@ -108,8 +108,11 @@ info.button.account.delete=Konto und Buchungen löschen
 info.title.transaction.delete=Buchung löschen
 info.text.transaction.delete=Möchtest du die Buchung "{0}" wirklich unwiderruflich löschen?
 info.text.transaction.repeating.delete=Möchtest du die Buchung "{0}" wirklich unwiderruflich löschen? <br>Hinweis: Es handelt sich um eine wiederholende Buchung. Beim Löschen dieser Buchung werden alle zugehörigen Wiederholungen ebenfalls gelöscht!
+
 info.title.chart.delete=Diagramm löschen
 info.text.chart.delete=Möchtest du das Diagramm "{0}" wirklich unwiderruflich löschen?
+notification.chart.delete.success=Das Diagramm "{0}" wurde erfolgreich gelöscht.
+notification.chart.delete.not.deletable=Das Diagramm mit der ID "{0}" ist nicht löschbar!
 
 info.title.template.delete=Vorlage löschen
 info.text.template.delete=Möchtest du die Vorlage "{0}" wirklich unwiderruflich löschen?
diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties
index 81eacbfda..c35d400bb 100644
--- a/src/main/resources/languages/base_en.properties
+++ b/src/main/resources/languages/base_en.properties
@@ -108,8 +108,11 @@ info.button.account.delete=Delete Account and Transactions
 info.title.transaction.delete=Delete Entry
 info.text.transaction.delete=Do you really want to delete the entry "{0}"? This can''t be undone.
 info.text.transaction.repeating.delete=Do you really want to delete the entry "{0}"? This can''t be undone.<br>Note: This transaction is a repeating transaction. Deleting this transaction will delete all related occurrences too!
+
 info.title.chart.delete=Delete Chart
 info.text.chart.delete=Do you really want to delete the chart "{0}"?
+notification.chart.delete.success=Successfully deleted chart "{0}".
+notification.chart.delete.not.deletable=The chart with id "{0}" is undeletable.
 
 info.title.template.delete=Delete Template
 info.text.template.delete=Do you really want to delete the template "{0}"?
-- 
GitLab