diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java index 675ff4d24ee452bf72dd7fa73704cd3ad5783e1b..2b8671db7e5ab0d92d6fd16276e0a8a6c7e1f39c 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java @@ -3,7 +3,7 @@ package de.deadlocker8.budgetmaster.accounts; import de.deadlocker8.budgetmaster.authentication.User; import de.deadlocker8.budgetmaster.authentication.UserRepository; import de.deadlocker8.budgetmaster.services.Resetable; -import de.deadlocker8.budgetmaster.transactions.TransactionRepository; +import de.deadlocker8.budgetmaster.transactions.TransactionService; import de.deadlocker8.budgetmaster.utils.Strings; import de.thecodelabs.utils.util.Localization; import org.slf4j.Logger; @@ -19,14 +19,14 @@ public class AccountService implements Resetable { private final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); private AccountRepository accountRepository; - private TransactionRepository transactionRepository; + private TransactionService transactionService; private UserRepository userRepository; @Autowired - public AccountService(AccountRepository accountRepository, TransactionRepository transactionRepository, UserRepository userRepository) + public AccountService(AccountRepository accountRepository, TransactionService transactionService, UserRepository userRepository) { this.accountRepository = accountRepository; - this.transactionRepository = transactionRepository; + this.transactionService = transactionService; this.userRepository = userRepository; createDefaults(); @@ -47,7 +47,7 @@ public class AccountService implements Resetable public void deleteAccount(int ID) { Account accountToDelete = accountRepository.findOne(ID); - transactionRepository.delete(accountToDelete.getReferringTransactions()); + transactionService.deleteTransactionsWithAccount(accountToDelete); accountToDelete.setReferringTransactions(new ArrayList<>()); List<Account> accounts = accountRepository.findAll(); diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java index 3510a0040cef8bc4613d651e5f8a2b0fd9a8f062..0e03741b5788a1d6089b68dbf181af6d68f6c173 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java +++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionRepository.java @@ -31,4 +31,6 @@ public interface TransactionRepository extends JpaRepository<Transaction, Intege @Query(value = "SELECT SUM(t.amount) FROM `transaction` as t WHERE t.transfer_account_id = ?1 AND t.date BETWEEN ?2 AND ?3", nativeQuery = true) Integer getRestForTransferDestination(int accountID, String startDate, String endDate); + + List<Transaction> findAllByTransferAccount(Account account); } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java index 9bce43ab8076a832aebffe52de2572f27d39fb0f..f50a0005c6e2e94d5d1727f3dd15d1a4f739d1b8 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionService.java @@ -167,6 +167,18 @@ public class TransactionService implements Resetable } } + public void deleteTransactionsWithAccount(Account account) { + for(Transaction referringTransaction : account.getReferringTransactions()) + { + deleteTransactionInRepo(referringTransaction.getID()); + } + + for(Transaction referringTransaction : transactionRepository.findAllByTransferAccount(account)) + { + deleteTransactionInRepo(referringTransaction.getID()); + } + } + @Override public void createDefaults() { diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java b/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java index 13dccf4e3585b51590321426a8d651f4a80f9258..459f7df76dd8d3ef69cc48f8cdecb9aeb1e6f0a8 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/unit/database/DatabaseImportTest.java @@ -292,6 +292,12 @@ public class DatabaseImportTest return null; } + @Override + public List<Transaction> findAllByTransferAccount(Account account) + { + return null; + } + @Override public List<Transaction> findAll() {