diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java index ccfa4d3eef9fecb014e4b66221500da3e7e59e4f..9825de02866301e46998e908c96851d690e6c8d6 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java @@ -13,11 +13,16 @@ import de.deadlocker8.budgetmaster.database.Database; import de.deadlocker8.budgetmaster.database.DatabaseParser; import de.deadlocker8.budgetmaster.database.DatabaseService; import de.deadlocker8.budgetmaster.database.accountmatches.AccountMatchList; +import de.deadlocker8.budgetmaster.services.ImportEntityType; import de.deadlocker8.budgetmaster.services.ImportService; +import de.deadlocker8.budgetmaster.services.UpdateCheckService; import de.deadlocker8.budgetmaster.update.BudgetMasterUpdateService; import de.deadlocker8.budgetmaster.utils.LanguageType; import de.deadlocker8.budgetmaster.utils.Mappings; import de.deadlocker8.budgetmaster.utils.Strings; +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 de.thecodelabs.utils.util.RandomUtils; import de.thecodelabs.versionizer.UpdateItem; @@ -43,6 +48,7 @@ import java.nio.charset.StandardCharsets; import java.text.MessageFormat; import java.util.Arrays; import java.util.List; +import java.util.Map; import java.util.Optional; @@ -58,12 +64,13 @@ public class SettingsController extends BaseController private final CategoryService categoryService; private final ImportService importService; private final BudgetMasterUpdateService budgetMasterUpdateService; + private final UpdateCheckService updateCheckService; private final BackupService scheduleTaskService; private final List<Integer> SEARCH_RESULTS_PER_PAGE_OPTIONS = Arrays.asList(10, 20, 25, 30, 50, 100); @Autowired - public SettingsController(SettingsService settingsService, UserRepository userRepository, DatabaseService databaseService, AccountService accountService, CategoryService categoryService, ImportService importService, BudgetMasterUpdateService budgetMasterUpdateService, BackupService scheduleTaskService) + public SettingsController(SettingsService settingsService, UserRepository userRepository, DatabaseService databaseService, AccountService accountService, CategoryService categoryService, ImportService importService, BudgetMasterUpdateService budgetMasterUpdateService, UpdateCheckService updateCheckService, BackupService scheduleTaskService) { this.settingsService = settingsService; this.userRepository = userRepository; @@ -72,6 +79,7 @@ public class SettingsController extends BaseController this.categoryService = categoryService; this.importService = importService; this.budgetMasterUpdateService = budgetMasterUpdateService; + this.updateCheckService = updateCheckService; this.scheduleTaskService = scheduleTaskService; } @@ -84,7 +92,8 @@ public class SettingsController extends BaseController } @PostMapping(value = "/save") - public String post(Model model, @ModelAttribute("Settings") Settings settings, BindingResult bindingResult, + public String post(WebRequest request, Model model, + @ModelAttribute("Settings") Settings settings, BindingResult bindingResult, @RequestParam(value = "password") String password, @RequestParam(value = "passwordConfirmation") String passwordConfirmation, @RequestParam(value = "languageType") String languageType, @@ -159,6 +168,8 @@ public class SettingsController extends BaseController Localization.load(); categoryService.localizeDefaultCategories(); + WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.settings.saved"), NotificationType.SUCCESS)); + return "redirect:/settings"; } @@ -225,7 +236,7 @@ public class SettingsController extends BaseController } @PostMapping(value = "/database/delete") - public String deleteDatabase(Model model, @RequestParam("verificationCode") String verificationCode, + public String deleteDatabase(WebRequest request, @RequestParam("verificationCode") String verificationCode, @RequestParam("verificationUserInput") String verificationUserInput) { if(verificationUserInput.equals(verificationCode)) @@ -233,13 +244,15 @@ public class SettingsController extends BaseController LOGGER.info("Deleting database..."); databaseService.reset(); LOGGER.info("Deleting database DONE."); + + WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.settings.database.delete.success"), NotificationType.SUCCESS)); + + return "redirect:/settings"; } else { return "redirect:/settings/database/requestDelete"; } - - return "redirect:/settings"; } @GetMapping("/database/requestImport") @@ -296,9 +309,14 @@ public class SettingsController extends BaseController } @GetMapping("/updateSearch") - public String updateSearch() + public String updateSearch(WebRequest request) { budgetMasterUpdateService.getUpdateService().fetchCurrentVersion(); + + if(updateCheckService.isUpdateAvailable()) + { + WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.settings.update.available", updateCheckService.getAvailableVersionString()), NotificationType.INFO)); + } return "redirect:/settings"; } diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index 09e9ad7080bdd26e5b75414340eac3a33e9b545c..ccaf51da5d6c67985b02f728466acfe74e4fb497 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -135,6 +135,9 @@ info.text.update=Es ist ein Update für BudgetMaster verfügbar<br><br>Installie info.title.backup.reminder=Zeit für ein Backup info.text.backup.reminder=Schon mal über ein Backup nachgedacht?<br>Du solltest deine BudgetMaster Datenbank regelmäßig sichern.<br>Dies geht besonders einfach in den Einstellungen.<br>Du kannst auch ein automatisches Backup konfigurieren.<br><br>(Du wilst diese Erinnerung nicht jeden Monat sehen? Dann deaktiviere die Backuperinnerung in den Einstellungen.) info.button.backup.reminder=Zu den Einstellungen +notification.settings.saved=Einstellungen gespeichert +notification.settings.update.available=BudgetMaster Update "{0}" verfügbar +notification.settings.database.delete.success=Datenbank erfolgreich gelöscht # WARNING warning.text.account.delete=Das Konto "{0}" kann nicht gelöscht werden, da mindestens ein Konto existieren muss. Um dieses Konto zu löschen musst du zuerst ein neues anlegen. diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index f1c559a2d9a414303a7a15a58dc2c2cda7a30f48..56dfcb497c5faf6c9a90a2b1babfbc7ecfc3a92d 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -135,6 +135,9 @@ info.text.update=An update for BudgetMaster is available<br><br>Installed: v{0}< info.title.backup.reminder=Time for a backup info.text.backup.reminder=Have you ever thought about a backup?<br>You should back up your BudgetMaster database regularly.<br>This can be done on the settings page.<br>You can also enable an automatic backup.<br><br>(You don''t want to see this reminder every month? Disable the backup reminder in the settings.) info.button.backup.reminder=To the settings +notification.settings.saved=Settings saved +notification.settings.update.available=BudgetMaster update "{0}" available +notification.settings.database.delete.success=Successfully deleted database # WARNING warning.text.account.delete=The account "{0}" could not be deleted, because at least one account must exist at all time. You have to create a new account in order to delete this one.