From 89cbff81c947707209ff67823e0c992c8ffc7c44 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 2 Dec 2018 10:50:26 +0100
Subject: [PATCH] Fixed #366 - sort account select

---
 .../budgetmaster/controller/AccountController.java |  6 +++---
 .../controller/SettingsController.java             |  6 +++---
 .../controller/TransactionController.java          | 14 ++++++++------
 .../repositories/AccountRepository.java            |  2 +-
 .../budgetmaster/services/AccountService.java      |  7 +++++++
 .../budgetmaster/services/HelpersService.java      |  2 +-
 6 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java
index 839782add..373701e24 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java
@@ -42,14 +42,14 @@ public class AccountController extends BaseController
 	@RequestMapping("/accounts")
 	public String accounts(HttpServletRequest request, Model model)
 	{
-		model.addAttribute("accounts", accountRepository.findAllByOrderByNameAsc());
+		model.addAttribute("accounts", accountService.getAllAccountsAsc());
 		return "accounts/accounts";
 	}
 
 	@RequestMapping("/accounts/{ID}/requestDelete")
 	public String requestDeleteAccount(Model model, @PathVariable("ID") Integer ID)
 	{
-		model.addAttribute("accounts", accountRepository.findAllByOrderByNameAsc());
+		model.addAttribute("accounts", accountService.getAllAccountsAsc());
 		model.addAttribute("currentAccount", accountRepository.getOne(ID));
 		return "accounts/accounts";
 	}
@@ -63,7 +63,7 @@ public class AccountController extends BaseController
 			return "redirect:/accounts";
 		}
 
-		model.addAttribute("accounts", accountRepository.findAllByOrderByNameAsc());
+		model.addAttribute("accounts", accountService.getAllAccountsAsc());
 		model.addAttribute("currentAccount", accountRepository.getOne(ID));
 		model.addAttribute("accountNotDeletable", true);
 		return "accounts/accounts";
diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java
index bfaf4b68d..d9a72ea1b 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java
@@ -7,8 +7,8 @@ import de.deadlocker8.budgetmaster.database.Database;
 import de.deadlocker8.budgetmaster.database.DatabaseParser;
 import de.deadlocker8.budgetmaster.database.accountmatches.AccountMatchList;
 import de.deadlocker8.budgetmaster.entities.Settings;
-import de.deadlocker8.budgetmaster.repositories.AccountRepository;
 import de.deadlocker8.budgetmaster.repositories.SettingsRepository;
+import de.deadlocker8.budgetmaster.services.AccountService;
 import de.deadlocker8.budgetmaster.services.DatabaseService;
 import de.deadlocker8.budgetmaster.services.HelpersService;
 import de.deadlocker8.budgetmaster.services.ImportService;
@@ -58,7 +58,7 @@ public class SettingsController extends BaseController
 	private DatabaseService databaseService;
 
 	@Autowired
-	private AccountRepository accountRepository;
+	private AccountService accountService;
 
 	@Autowired
 	private ImportService importService;
@@ -236,7 +236,7 @@ public class SettingsController extends BaseController
 	public String openAccountMatcher(WebRequest request, Model model)
 	{
 		model.addAttribute("database", request.getAttribute("database", WebRequest.SCOPE_SESSION));
-		model.addAttribute("availableAccounts", accountRepository.findAllByOrderByNameAsc());
+		model.addAttribute("availableAccounts", accountService.getAllAccountsAsc());
 		return "import";
 	}
 
diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/TransactionController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/TransactionController.java
index e94dae0b4..4af15b79d 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/controller/TransactionController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/controller/TransactionController.java
@@ -1,13 +1,15 @@
 package de.deadlocker8.budgetmaster.controller;
 
-import de.deadlocker8.budgetmaster.entities.Transaction;
 import de.deadlocker8.budgetmaster.entities.Settings;
 import de.deadlocker8.budgetmaster.entities.Tag;
+import de.deadlocker8.budgetmaster.entities.Transaction;
 import de.deadlocker8.budgetmaster.repeating.RepeatingOption;
 import de.deadlocker8.budgetmaster.repeating.RepeatingTransactionUpdater;
 import de.deadlocker8.budgetmaster.repeating.endoption.*;
-import de.deadlocker8.budgetmaster.repeating.modifier.*;
+import de.deadlocker8.budgetmaster.repeating.modifier.RepeatingModifier;
+import de.deadlocker8.budgetmaster.repeating.modifier.RepeatingModifierType;
 import de.deadlocker8.budgetmaster.repositories.*;
+import de.deadlocker8.budgetmaster.services.AccountService;
 import de.deadlocker8.budgetmaster.services.HelpersService;
 import de.deadlocker8.budgetmaster.services.TransactionService;
 import de.deadlocker8.budgetmaster.utils.ResourceNotFoundException;
@@ -37,7 +39,7 @@ public class TransactionController extends BaseController
 	private CategoryRepository categoryRepository;
 
 	@Autowired
-	private AccountRepository accountRepository;
+	private AccountService accountService;
 
 	@Autowired
 	private SettingsRepository settingsRepository;
@@ -113,7 +115,7 @@ public class TransactionController extends BaseController
 		Transaction emptyTransaction = new Transaction();
 		model.addAttribute("currentDate", date);
 		model.addAttribute("categories", categoryRepository.findAllByOrderByNameAsc());
-		model.addAttribute("accounts", accountRepository.findAllByOrderByNameAsc());
+		model.addAttribute("accounts", accountService.getAllAccountsAsc());
 		model.addAttribute("transaction", emptyTransaction);
 		return "transactions/newTransaction";
 	}
@@ -195,7 +197,7 @@ public class TransactionController extends BaseController
 			model.addAttribute("error", bindingResult);
 			model.addAttribute("currentDate", date);
 			model.addAttribute("categories", categoryRepository.findAllByOrderByNameAsc());
-			model.addAttribute("accounts", accountRepository.findAllByOrderByNameAsc());
+			model.addAttribute("accounts", accountService.getAllAccountsAsc());
 			model.addAttribute("transaction", transaction);
 			return "transactions/newTransaction";
 		}
@@ -222,7 +224,7 @@ public class TransactionController extends BaseController
 		DateTime date = getDateTimeFromCookie(cookieDate);
 		model.addAttribute("currentDate", date);
 		model.addAttribute("categories", categoryRepository.findAllByOrderByNameAsc());
-		model.addAttribute("accounts", accountRepository.findAllByOrderByNameAsc());
+		model.addAttribute("accounts", accountService.getAllAccountsAsc());
 		model.addAttribute("transaction", transaction);
 		return "transactions/newTransaction";
 	}
diff --git a/src/main/java/de/deadlocker8/budgetmaster/repositories/AccountRepository.java b/src/main/java/de/deadlocker8/budgetmaster/repositories/AccountRepository.java
index f36fab75f..9cea8a0b7 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/repositories/AccountRepository.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/repositories/AccountRepository.java
@@ -9,7 +9,7 @@ import java.util.List;
 
 public interface AccountRepository extends JpaRepository<Account, Integer>
 {
-	List<Account> findAllByOrderByNameAsc();
+	List<Account> findAllByTypeOrderByNameAsc(AccountType accountType);
 
 	Account findByName(String name);
 
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/AccountService.java b/src/main/java/de/deadlocker8/budgetmaster/services/AccountService.java
index c81472a47..119454e30 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/AccountService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/AccountService.java
@@ -39,6 +39,13 @@ public class AccountService implements Resetable
 		return accountRepository;
 	}
 
+	public List<Account> getAllAccountsAsc()
+	{
+		List<Account> accounts = accountRepository.findAllByType(AccountType.ALL);
+		accounts.addAll(accountRepository.findAllByTypeOrderByNameAsc(AccountType.CUSTOM));
+		return accounts;
+	}
+
 	public void deleteAccount(int ID)
 	{
 		Account accountToDelete = accountRepository.findOne(ID);
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java
index 359c72143..dcc66b880 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java
@@ -196,7 +196,7 @@ public class HelpersService
 
 	public List<Account> getAllAccounts()
 	{
-		return accountRepository.findAllByOrderByNameAsc();
+		return accountService.getAllAccountsAsc();
 	}
 
 	public Account getCurrentAccount()
-- 
GitLab