From f0025c9e275bcffc857a80e8b7822e66a74e51f3 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 17 Oct 2021 22:05:41 +0200 Subject: [PATCH] #577 - added route to fill transaction form from existing one --- .../transactions/TransactionController.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java index 3733d4d5d..81db8cfd5 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java @@ -333,4 +333,39 @@ public class TransactionController extends BaseController return redirectUrl; } + + @GetMapping("/{ID}/newFromExisting") + public String newFromExisting(Model model, @PathVariable("ID") Integer ID, @CookieValue("currentDate") String cookieDate) + { + Optional<Transaction> transactionOptional = transactionService.getRepository().findById(ID); + if(transactionOptional.isEmpty()) + { + throw new ResourceNotFoundException(); + } + + Transaction existingTransaction = transactionOptional.get(); + + // select first transaction in order to provide correct start date for repeating transactions + if(existingTransaction.getRepeatingOption() != null) + { + existingTransaction = existingTransaction.getRepeatingOption().getReferringTransactions().get(0); + } + + final Transaction newTransaction = new Transaction(existingTransaction); + newTransaction.setID(null); + + if(newTransaction.getAccount().getAccountState() != AccountState.FULL_ACCESS) + { + newTransaction.setAccount(helpers.getCurrentAccountOrDefault()); + } + + DateTime date = dateService.getDateTimeFromCookie(cookieDate); + transactionService.prepareModelNewOrEdit(model, false, date, false, newTransaction, accountService.getAllActivatedAccountsAsc()); + + if(newTransaction.isTransfer()) + { + return "transactions/newTransactionTransfer"; + } + return "transactions/newTransactionNormal"; + } } \ No newline at end of file -- GitLab