From e3d14163f5f27d562da62fbf26b8c53ceeb3c264 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 15 Jan 2023 11:31:11 +0100 Subject: [PATCH] #724 - cancel redirects back to import and mark row as pending --- .../budgetmaster/transactions/TransactionController.java | 8 +++++++- .../transactions/TransactionImportController.java | 9 ++++++--- .../templates/transactions/newTransactionMacros.ftl | 7 ++++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java index 915c81545..0e1315ae0 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java @@ -18,6 +18,8 @@ import de.deadlocker8.budgetmaster.services.DateFormatStyle; import de.deadlocker8.budgetmaster.services.DateService; import de.deadlocker8.budgetmaster.services.HelpersService; import de.deadlocker8.budgetmaster.settings.SettingsService; +import de.deadlocker8.budgetmaster.transactions.csvimport.CsvTransaction; +import de.deadlocker8.budgetmaster.transactions.csvimport.CsvTransactionStatus; import de.deadlocker8.budgetmaster.utils.Mappings; import de.deadlocker8.budgetmaster.utils.ResourceNotFoundException; import de.deadlocker8.budgetmaster.utils.WebRequestUtils; @@ -263,8 +265,12 @@ public class TransactionController extends BaseController } // redirect back to csv import if import is active - if(request.getAttribute(TransactionImportController.RequestAttributeNames.CSV_TRANSACTIONS, RequestAttributes.SCOPE_SESSION) != null) + final Object currentCsvTransaction = request.getAttribute(TransactionImportController.RequestAttributeNames.CURRENT_CSV_TRANSACTION, RequestAttributes.SCOPE_SESSION); + if(currentCsvTransaction != null) { + final CsvTransaction csvTransaction = (CsvTransaction) currentCsvTransaction; + csvTransaction.setStatus(CsvTransactionStatus.IMPORTED); + request.removeAttribute(TransactionImportController.RequestAttributeNames.CURRENT_CSV_TRANSACTION, RequestAttributes.SCOPE_SESSION); return ReturnValues.REDIRECT_IMPORT; } diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java index e4d62d732..8611248ef 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java @@ -38,7 +38,7 @@ public class TransactionImportController extends BaseController private static class ReturnValues { - public static final String TRANSACTION_IMPORT = "TRANSACTIONS/transactionImport"; + public static final String TRANSACTION_IMPORT = "transactions/transactionImport"; public static final String REDIRECT_IMPORT = "redirect:/transactionImport"; public static final String REDIRECT_CANCEL = "redirect:/transactionImport/cancel"; public static final String NEW_TRANSACTION_NORMAL = "transactions/newTransactionNormal"; @@ -56,7 +56,7 @@ public class TransactionImportController extends BaseController public static final String CSV_TRANSACTIONS = "csvTransactions"; public static final String ERROR_UPLOAD = "errorUpload"; public static final String ERRORS_COLUMN_SETTINGS = "errorsColumnSettings"; - + public static final String CURRENT_CSV_TRANSACTION = "currentCsvTransaction"; } private final TransactionService transactionService; @@ -78,6 +78,8 @@ public class TransactionImportController extends BaseController @GetMapping public String transactionImport(WebRequest request, Model model) { + request.removeAttribute(RequestAttributeNames.CURRENT_CSV_TRANSACTION, RequestAttributes.SCOPE_SESSION); + if(request.getAttribute(RequestAttributeNames.CSV_IMPORT, RequestAttributes.SCOPE_SESSION) == null) { model.addAttribute(RequestAttributeNames.CSV_IMPORT, new CsvImport(null, ";", StandardCharsets.UTF_8.name(), 0)); @@ -239,7 +241,7 @@ public class TransactionImportController extends BaseController } final CsvTransaction csvTransaction = transactionOptional.get(); - csvTransaction.setStatus(CsvTransactionStatus.IMPORTED); + request.setAttribute(RequestAttributeNames.CURRENT_CSV_TRANSACTION, csvTransaction, RequestAttributes.SCOPE_SESSION); final Transaction newTransaction = createTransactionFromCsvTransaction(csvTransaction); @@ -297,6 +299,7 @@ public class TransactionImportController extends BaseController request.removeAttribute(RequestAttributeNames.CSV_TRANSACTIONS, RequestAttributes.SCOPE_SESSION); request.removeAttribute(RequestAttributeNames.ERROR_UPLOAD, RequestAttributes.SCOPE_SESSION); request.removeAttribute(RequestAttributeNames.ERRORS_COLUMN_SETTINGS, RequestAttributes.SCOPE_SESSION); + request.removeAttribute(RequestAttributeNames.CURRENT_CSV_TRANSACTION, RequestAttributes.SCOPE_SESSION); } private Optional<CsvTransaction> getTransactionByIndex(WebRequest request, Integer index) diff --git a/BudgetMasterServer/src/main/resources/templates/transactions/newTransactionMacros.ftl b/BudgetMasterServer/src/main/resources/templates/transactions/newTransactionMacros.ftl index cce06b1ae..a6bfaec7f 100644 --- a/BudgetMasterServer/src/main/resources/templates/transactions/newTransactionMacros.ftl +++ b/BudgetMasterServer/src/main/resources/templates/transactions/newTransactionMacros.ftl @@ -349,7 +349,12 @@ </#macro> <#macro buttonCancel cancelURL> - <@header.buttonLink url=cancelURL icon='clear' localizationKey='cancel' id='button-cancel-save-transaction' color='red'/> + <#assign url=cancelURL/> + <#if currentCsvTransaction??> + <#assign url='/transactionImport'/> + </#if> + + <@header.buttonLink url=url icon='clear' localizationKey='cancel' id='button-cancel-save-transaction' color='red'/> </#macro> <#macro buttonSave allowEmptyAmount> -- GitLab