diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountRepository.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountRepository.java index 3536d8fb2fdfc4c09063e9cad1b1f8c62a32d76b..f9a7747e5606f8deb42250f6df948ea2c5dc41b8 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountRepository.java +++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountRepository.java @@ -15,6 +15,8 @@ public interface AccountRepository extends JpaRepository<Account, Integer> List<Account> findAllByType(AccountType accountType); + List<Account> findAllByTypeAndAccountStateOrderByNameAsc(AccountType accountType, AccountState accountState); + Account findByIsSelected(boolean isSelected); Account findByIsDefault(boolean isDefault); diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java index cd7624f8a1bc0d64deac0560ed646df01631a7c7..525b86779d79edc6fc70eb0cab9600de4d92a9ec 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java @@ -10,6 +10,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.text.MessageFormat; import java.util.ArrayList; @@ -50,7 +51,7 @@ public class AccountService implements Resetable public List<Account> getAllActivatedAccountsAsc() { List<Account> accounts = accountRepository.findAllByType(AccountType.ALL); - accounts.addAll(accountRepository.findAllByTypeAndIsReadOnlyOrderByNameAsc(AccountType.CUSTOM, false)); + accounts.addAll(accountRepository.findAllByTypeAndAccountStateOrderByNameAsc(AccountType.CUSTOM, AccountState.FULL_ACCESS)); return accounts; } @@ -72,7 +73,7 @@ public class AccountService implements Resetable // set new default if necessary if(accountToDelete.isDefault()) { - List<Account> accounts = accountRepository.findAllByType(AccountType.CUSTOM); + List<Account> accounts = accountRepository.findAllByTypeAndAccountStateOrderByNameAsc(AccountType.CUSTOM, AccountState.FULL_ACCESS); accounts.remove(accountToDelete); setAsDefaultAccount(accounts.get(0).getID()); } @@ -92,6 +93,7 @@ public class AccountService implements Resetable } @Override + @Transactional public void createDefaults() { if(accountRepository.findAll().isEmpty()) @@ -111,7 +113,7 @@ public class AccountService implements Resetable Account defaultAccount = accountRepository.findByIsDefault(true); if(defaultAccount == null) { - Account account = accountRepository.findAllByType(AccountType.CUSTOM).get(0); + Account account = accountRepository.findAllByTypeAndAccountStateOrderByNameAsc(AccountType.CUSTOM, AccountState.FULL_ACCESS).get(0); setAsDefaultAccount(account.getID()); } setAsDefaultAccount(accountRepository.findByIsDefault(true).getID()); @@ -148,6 +150,7 @@ public class AccountService implements Resetable } } + @Transactional public void selectAccount(int ID) { deselectAllAccounts(); @@ -170,6 +173,7 @@ public class AccountService implements Resetable } } + @Transactional public void setAsDefaultAccount(int ID) { Optional<Account> accountToSelectOptional = accountRepository.findById(ID); @@ -190,7 +194,8 @@ public class AccountService implements Resetable accountRepository.save(accountToSelect); } - private void unsetDefaultForAllAccounts() + @Transactional + public void unsetDefaultForAllAccounts() { List<Account> accounts = accountRepository.findAll(); for(Account currentAccount : accounts) diff --git a/src/main/resources/templates/accounts/accounts.ftl b/src/main/resources/templates/accounts/accounts.ftl index 930563cb484a6b7c4ea4b1b65b697a689a133b56..51d9fa6b381f97e0d899e847e528f2a8a09722fc 100644 --- a/src/main/resources/templates/accounts/accounts.ftl +++ b/src/main/resources/templates/accounts/accounts.ftl @@ -28,17 +28,14 @@ <tr class="account-overview-row"> <td> <#if account.getAccountState().name() == "READ_ONLY"> - <#assign toolTipText = locale.getString("account.tooltip.readonly.activate")/> - <#assign lockIcon = '<i class="fas fa-lock"></i>'/> <div class="placeholder-icon"></div> + <i class="fas fa-lock"></i> + <#elseif account.getAccountState().name() == "HIDDEN"> + <div class="placeholder-icon"></div> + <i class="far fa-eye-slash"></i> <#else> - <#assign toolTipText = locale.getString("account.tooltip.readonly.deactivate")/> - <#assign lockIcon = '<i class="fas fa-lock-open"></i>'/> <a href="<@s.url '/accounts/${account.getID()?c}/setAsDefault'/>" class="btn-flat no-padding text-default tooltipped" data-position="left" data-tooltip="${locale.getString("account.tooltip.default")}"><i class="material-icons left"><#if account.isDefault()>star<#else>star_border</#if></i></a> - </#if> - - <#if !account.isDefault()> - <a href="<@s.url '/accounts/${account.getID()?c}/toggleReadOnly'/>" class="btn-flat no-padding text-default tooltipped" data-position="right" data-tooltip="${toolTipText}">${lockIcon}</a> + <i class="fas fa-edit"></i> </#if> </td> <td><#if account.getIcon()??><img src="${account.getIcon().getBase64EncodedImage()}" class="account-icon"/></#if></td>