From d019b02f388527f3030e45aa6780b656d09b3acc Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Mon, 1 Mar 2021 20:27:50 +0100
Subject: [PATCH] #583 - show feedback after deleting and creating (from
 transaction) a template

---
 .../templates/TemplateController.java           | 17 +++++++++++++++--
 src/main/resources/languages/base_de.properties |  3 +++
 src/main/resources/languages/base_en.properties |  3 +++
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java
index 57e710b7a..532b98780 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java
@@ -10,6 +10,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.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -17,6 +21,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 org.springframework.web.server.ResponseStatusException;
 
 import java.util.Optional;
@@ -62,7 +67,8 @@ public class TemplateController extends BaseController
 	}
 
 	@PostMapping(value = "/fromTransaction")
-	public String postFromTransaction(@RequestParam(value = "templateName") String templateName,
+	public String postFromTransaction(WebRequest request,
+									  @RequestParam(value = "templateName") String templateName,
 									  @ModelAttribute("NewTransaction") Transaction transaction,
 									  @RequestParam(value = "includeCategory") Boolean includeCategory,
 									  @RequestParam(value = "includeAccount") Boolean includeAccount)
@@ -79,6 +85,9 @@ public class TemplateController extends BaseController
 		}
 
 		templateService.createFromTransaction(templateName, transaction, includeCategory, includeAccount);
+
+		WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.template.add.success", templateName), NotificationType.SUCCESS));
+
 		return "redirect:/templates";
 	}
 
@@ -98,9 +107,13 @@ public class TemplateController extends BaseController
 	}
 
 	@GetMapping("/{ID}/delete")
-	public String deleteTemplate(@PathVariable("ID") Integer ID)
+	public String deleteTemplate(WebRequest request, @PathVariable("ID") Integer ID)
 	{
+		final Template templateToDelete = templateService.getRepository().getOne(ID);
 		templateService.getRepository().deleteById(ID);
+
+		WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.template.delete.success", templateToDelete.getTemplateName()), NotificationType.SUCCESS));
+
 		return "redirect:/templates";
 	}
 
diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties
index 56a1ccb7c..b66ae34de 100644
--- a/src/main/resources/languages/base_de.properties
+++ b/src/main/resources/languages/base_de.properties
@@ -110,8 +110,11 @@ info.text.transaction.delete=Möchtest du die Buchung "{0}" wirklich unwiderrufl
 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?
+
 info.title.template.delete=Vorlage löschen
 info.text.template.delete=Möchtest du die Vorlage "{0}" wirklich unwiderruflich löschen?
+notification.template.delete.success=Die Vorlage "{0}" wurde erfolgreich gelöscht.
+notification.template.add.success=Die Vorlage "{0}" wurde erfolgreich angelegt.
 
 info.title.database.delete=Datenbank löschen
 info.header.text.database.delete=Soll die Datenbank wirklich unwiderruflich gelöscht werden?<br>Hinweis: Beim Löschen der Datenbank werden alle Buchungen, Kategorien, Konten, Diagramme und Vorlagen unwiderruflich gelöscht.
diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties
index 589f4ab3a..81eacbfda 100644
--- a/src/main/resources/languages/base_en.properties
+++ b/src/main/resources/languages/base_en.properties
@@ -110,8 +110,11 @@ info.text.transaction.delete=Do you really want to delete the entry "{0}"? This
 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}"?
+
 info.title.template.delete=Delete Template
 info.text.template.delete=Do you really want to delete the template "{0}"?
+notification.template.delete.success=Successfully deleted template "{0}".
+notification.template.add.success=Successfully added new template "{0}".
 
 info.title.database.delete=Delete Database
 info.header.text.database.delete=Do you really want to delete the database? This can''t be undone.<br>Note: Deleting the database will delete all transactions, categories, accounts, charts and templates permanently.
-- 
GitLab