From f0bb6a503d28ceb4adde8195560ba09416ece0dd Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sat, 8 May 2021 21:20:30 +0200 Subject: [PATCH] fixed warning that at least one account must be set to visibility "full access" --- .../accounts/AccountController.java | 25 ++++++++++++++++--- .../resources/languages/base_de.properties | 6 ++--- .../resources/languages/base_en.properties | 2 +- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java index 583ce5c12..3f3423a64 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java @@ -134,9 +134,8 @@ public class AccountController extends BaseController bindingResult.addError(new FieldError("NewAccount", "name", "", false, new String[]{"warning.duplicate.account.name"}, null, null)); } - List<Account> activatedAccounts = accountService.getRepository().findAllByTypeAndAccountStateOrderByNameAsc(AccountType.CUSTOM, AccountState.FULL_ACCESS); - boolean newAccountStateWouldLeaveNoFullAccessAccounts = activatedAccounts.size() == 1 && account.getAccountState() != AccountState.FULL_ACCESS; - if(!isNewAccount && newAccountStateWouldLeaveNoFullAccessAccounts) + boolean isAccountStateAllowed = isAccountStateAllowed(account); + if(!isNewAccount && !isAccountStateAllowed) { final String warningMessage = Localization.getString("warning.account.edit.state", Localization.getString(AccountState.FULL_ACCESS.getLocalizationKey())); WebRequestUtils.putNotification(webRequest, new Notification(warningMessage, NotificationType.WARNING)); @@ -169,4 +168,24 @@ public class AccountController extends BaseController return "redirect:/accounts"; } + + private boolean isAccountStateAllowed(Account account) + { + List<Account> activatedAccounts = accountService.getRepository().findAllByTypeAndAccountStateOrderByNameAsc(AccountType.CUSTOM, AccountState.FULL_ACCESS); + if(activatedAccounts.size() > 1) + { + return true; + } + + final Account lastActivatedAccount = activatedAccounts.get(0); + final boolean currentAccountIsLastActivated = lastActivatedAccount.getID().equals(account.getID()); + if(currentAccountIsLastActivated) + { + return account.getAccountState() == AccountState.FULL_ACCESS; + } + else + { + return true; + } + } } \ No newline at end of file diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index 71e0619c0..dcb8c3e4a 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -151,7 +151,7 @@ delete.image.error.not.existing=Fehler: Bild mit ID {0} existiert nicht # 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. -warning.account.edit.state=Für mindestens ein Konto muss die Sichtbarkeit auf "{0}" gesetzt sein!s +warning.account.edit.state=Für mindestens ein Konto muss die Sichtbarkeit auf "{0}" gesetzt sein! warning.empty.category.name=Bitte gib einen Namen ein. warning.empty.account.name=Bitte gib einen Namen ein. warning.duplicate.account.name=Es existiert bereits ein Konto mit diesem Namen. @@ -238,8 +238,8 @@ settings.backup.auto.time.short={0} Uhr settings.backup.auto.strategy=Strategie settings.backup.auto.strategy.none=Keine settings.backup.auto.strategy.local=Kopien im Dateisystem -settings.backup.auto.strategy.git.local=Lokales git repository -settings.backup.auto.strategy.git.remote=Entferntes git repository +settings.backup.auto.strategy.git.local=Lokales git Repository +settings.backup.auto.strategy.git.remote=Entferntes git Repository settings.backup.auto.strategy.git.remote.help=Einrichtungshilfe settings.backup.auto.strategy.git.remote.help.url=https://github.com/deadlocker8/BudgetMaster/wiki/Automatic-backup settings.backup.auto.files.to.keep=Anzahl aufzubewahrender Backups (0 für unbegrenzt) diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index c377750e4..d174a1568 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -151,7 +151,7 @@ delete.image.error.not.existing=Error: Image with ID {0} does not exist # 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. -warning.account.edit.state=At least one account must have set it's visibility to "{0}"! +warning.account.edit.state=At least one account must have set it''s visibility to "{0}"! warning.empty.category.name=Please insert a name. warning.empty.account.name=Please insert a name. warning.duplicate.account.name=An account with this name is already existing. -- GitLab