Skip to content
Snippets Groups Projects
Commit ac52c874 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

Fixed #590 - handle new account state when toggling default account or delete

parent 31f63cb6
No related branches found
No related tags found
No related merge requests found
...@@ -15,6 +15,8 @@ public interface AccountRepository extends JpaRepository<Account, Integer> ...@@ -15,6 +15,8 @@ public interface AccountRepository extends JpaRepository<Account, Integer>
List<Account> findAllByType(AccountType accountType); List<Account> findAllByType(AccountType accountType);
List<Account> findAllByTypeAndAccountStateOrderByNameAsc(AccountType accountType, AccountState accountState);
Account findByIsSelected(boolean isSelected); Account findByIsSelected(boolean isSelected);
Account findByIsDefault(boolean isDefault); Account findByIsDefault(boolean isDefault);
......
...@@ -10,6 +10,7 @@ import org.slf4j.Logger; ...@@ -10,6 +10,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -50,7 +51,7 @@ public class AccountService implements Resetable ...@@ -50,7 +51,7 @@ public class AccountService implements Resetable
public List<Account> getAllActivatedAccountsAsc() public List<Account> getAllActivatedAccountsAsc()
{ {
List<Account> accounts = accountRepository.findAllByType(AccountType.ALL); 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; return accounts;
} }
...@@ -72,7 +73,7 @@ public class AccountService implements Resetable ...@@ -72,7 +73,7 @@ public class AccountService implements Resetable
// set new default if necessary // set new default if necessary
if(accountToDelete.isDefault()) if(accountToDelete.isDefault())
{ {
List<Account> accounts = accountRepository.findAllByType(AccountType.CUSTOM); List<Account> accounts = accountRepository.findAllByTypeAndAccountStateOrderByNameAsc(AccountType.CUSTOM, AccountState.FULL_ACCESS);
accounts.remove(accountToDelete); accounts.remove(accountToDelete);
setAsDefaultAccount(accounts.get(0).getID()); setAsDefaultAccount(accounts.get(0).getID());
} }
...@@ -92,6 +93,7 @@ public class AccountService implements Resetable ...@@ -92,6 +93,7 @@ public class AccountService implements Resetable
} }
@Override @Override
@Transactional
public void createDefaults() public void createDefaults()
{ {
if(accountRepository.findAll().isEmpty()) if(accountRepository.findAll().isEmpty())
...@@ -111,7 +113,7 @@ public class AccountService implements Resetable ...@@ -111,7 +113,7 @@ public class AccountService implements Resetable
Account defaultAccount = accountRepository.findByIsDefault(true); Account defaultAccount = accountRepository.findByIsDefault(true);
if(defaultAccount == null) 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(account.getID());
} }
setAsDefaultAccount(accountRepository.findByIsDefault(true).getID()); setAsDefaultAccount(accountRepository.findByIsDefault(true).getID());
...@@ -148,6 +150,7 @@ public class AccountService implements Resetable ...@@ -148,6 +150,7 @@ public class AccountService implements Resetable
} }
} }
@Transactional
public void selectAccount(int ID) public void selectAccount(int ID)
{ {
deselectAllAccounts(); deselectAllAccounts();
...@@ -170,6 +173,7 @@ public class AccountService implements Resetable ...@@ -170,6 +173,7 @@ public class AccountService implements Resetable
} }
} }
@Transactional
public void setAsDefaultAccount(int ID) public void setAsDefaultAccount(int ID)
{ {
Optional<Account> accountToSelectOptional = accountRepository.findById(ID); Optional<Account> accountToSelectOptional = accountRepository.findById(ID);
...@@ -190,7 +194,8 @@ public class AccountService implements Resetable ...@@ -190,7 +194,8 @@ public class AccountService implements Resetable
accountRepository.save(accountToSelect); accountRepository.save(accountToSelect);
} }
private void unsetDefaultForAllAccounts() @Transactional
public void unsetDefaultForAllAccounts()
{ {
List<Account> accounts = accountRepository.findAll(); List<Account> accounts = accountRepository.findAll();
for(Account currentAccount : accounts) for(Account currentAccount : accounts)
......
...@@ -28,17 +28,14 @@ ...@@ -28,17 +28,14 @@
<tr class="account-overview-row"> <tr class="account-overview-row">
<td> <td>
<#if account.getAccountState().name() == "READ_ONLY"> <#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> <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> <#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> <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> <i class="fas fa-edit"></i>
<#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>
</#if> </#if>
</td> </td>
<td><#if account.getIcon()??><img src="${account.getIcon().getBase64EncodedImage()}" class="account-icon"/></#if></td> <td><#if account.getIcon()??><img src="${account.getIcon().getBase64EncodedImage()}" class="account-icon"/></#if></td>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment