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>
List<Account> findAllByType(AccountType accountType);
List<Account> findAllByTypeAndAccountStateOrderByNameAsc(AccountType accountType, AccountState accountState);
Account findByIsSelected(boolean isSelected);
Account findByIsDefault(boolean isDefault);
......
......@@ -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)
......
......@@ -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>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment