From 12f373261ecd4abbd4dbba80c0c3c30002a924bf Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Mon, 1 Mar 2021 20:21:27 +0100 Subject: [PATCH] #583 - show feedback after deleting of a category --- .../categories/CategoryController.java | 23 +++++++++++++++---- .../resources/languages/base_de.properties | 3 +++ .../resources/languages/base_en.properties | 3 +++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java index 93def3e53..6f5339eb1 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java @@ -3,15 +3,17 @@ package de.deadlocker8.budgetmaster.categories; import de.deadlocker8.budgetmaster.controller.BaseController; import de.deadlocker8.budgetmaster.services.HelpersService; import de.deadlocker8.budgetmaster.settings.SettingsService; -import de.deadlocker8.budgetmaster.utils.Colors; -import de.deadlocker8.budgetmaster.utils.Mappings; -import de.deadlocker8.budgetmaster.utils.ResourceNotFoundException; +import de.deadlocker8.budgetmaster.utils.*; +import de.deadlocker8.budgetmaster.utils.notification.Notification; +import de.deadlocker8.budgetmaster.utils.notification.NotificationType; import de.thecodelabs.utils.util.ColorUtilsNonJavaFX; +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.web.bind.annotation.*; +import org.springframework.web.context.request.WebRequest; import java.util.List; import java.util.Optional; @@ -65,11 +67,21 @@ public class CategoryController extends BaseController } @PostMapping(value = "/{ID}/delete") - public String deleteCategory(@PathVariable("ID") Integer ID, @ModelAttribute("DestinationCategory") DestinationCategory destinationCategory) + public String deleteCategory(WebRequest request, @PathVariable("ID") Integer ID, @ModelAttribute("DestinationCategory") DestinationCategory destinationCategory) { if(categoryService.isDeletable(ID)) { - categoryService.deleteCategory(ID, destinationCategory.getCategory()); + final Optional<Category> categoryOptional = categoryService.findById(ID); + if(categoryOptional.isPresent()) + { + final Category categoryToDelete = categoryOptional.get(); + categoryService.deleteCategory(ID, destinationCategory.getCategory()); + WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.category.delete.success", categoryToDelete.getName()), NotificationType.SUCCESS)); + } + } + else + { + WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.category.delete.not.deletable", String.valueOf(ID)), NotificationType.ERROR)); } return "redirect:/categories"; @@ -83,6 +95,7 @@ public class CategoryController extends BaseController Category emptyCategory = new Category(null, ColorUtilsNonJavaFX.toRGBHexWithoutOpacity(Colors.CATEGORIES_LIGHT_GREY).toLowerCase(), CategoryType.CUSTOM); model.addAttribute("category", emptyCategory); model.addAttribute("settings", settingsService.getSettings()); + return "categories/newCategory"; } diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index 38295f0c5..56a1ccb7c 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -99,6 +99,9 @@ info.title.category.delete=Kategorie löschen info.text.category.delete=Möchtest du die Kategorie "{0}" wirklich unwiderruflich löschen? info.title.category.delete.move=Verschieben nach info.text.category.delete.move=In welche Kategorie sollen alle veknüpften Buchungen verschoben werden? +notification.category.delete.success=Die Kategorie "{0}" wurde erfolgreich gelöscht. +notification.category.delete.not.deletable=Die Kategorie mit der ID "{0}" ist nicht löschbar! + 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 diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index 96de84523..589f4ab3a 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -99,6 +99,9 @@ info.title.category.delete=Delete Category info.text.category.delete=Do you really want to delete the category "{0}"? This can''t be undone. info.title.category.delete.move=Move to info.text.category.delete.move=In which category should all related transactions be moved? +notification.category.delete.success=Successfully deleted category "{0}". +notification.category.delete.not.deletable=The category with id "{0}" is undeletable. + 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 -- GitLab