diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java index 583ce5c1268dd647a5b77244dd0c608585111c7e..3f3423a64012588326ba69d1f83e7ca2fdc9403e 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 71e0619c0cd375a68cf3d37d98eef46221d6e766..dcb8c3e4a0eca04ee45c71d2f983e8b6320e385e 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 c377750e49161bef5e0afbbeb30b80b2a80553e7..d174a1568361c1cfbda3166cd2b2ed98791ab719 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.