From a7ce3dc403f17f4e6ba25f2360a5397fec0d43ca Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 8 Jan 2023 17:03:50 +0100
Subject: [PATCH] #724 - add button to skip row

---
 .../TransactionImportController.java          | 20 ++++++++++++++-----
 .../resources/languages/base_de.properties    |  1 +
 .../resources/languages/base_en.properties    |  1 +
 .../transactions/transactionImport.ftl        |  4 ++++
 4 files changed, 21 insertions(+), 5 deletions(-)

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 c5dc437c4..38839cdbd 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java
@@ -9,17 +9,13 @@ import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.FieldError;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.context.request.RequestAttributes;
 import org.springframework.web.context.request.WebRequest;
 
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Random;
 
 @Controller
 @RequestMapping(Mappings.TRANSACTION_IMPORT)
@@ -159,6 +155,20 @@ public class TransactionImportController extends BaseController
 		return ReturnValues.REDIRECT_IMPORT;
 	}
 
+	@GetMapping("/{index}/skip")
+	public String skip(WebRequest request, @PathVariable("index") Integer index)
+	{
+		final Object attribute = request.getAttribute(RequestAttributeNames.CSV_TRANSACTIONS, RequestAttributes.SCOPE_SESSION);
+		if(attribute == null)
+		{
+			return ReturnValues.REDIRECT_CANCEL;
+		}
+
+		final List<CsvTransaction> csvTransactions = (List<CsvTransaction>) attribute;
+		csvTransactions.get(index).setStatus(CsvTransactionStatus.SKIPPED);
+		return ReturnValues.REDIRECT_IMPORT;
+	}
+
 	private void removeAllAttributes(WebRequest request)
 	{
 		request.removeAttribute(RequestAttributeNames.CSV_IMPORT, RequestAttributes.SCOPE_SESSION);
diff --git a/BudgetMasterServer/src/main/resources/languages/base_de.properties b/BudgetMasterServer/src/main/resources/languages/base_de.properties
index 899eafbe5..1d8969f49 100644
--- a/BudgetMasterServer/src/main/resources/languages/base_de.properties
+++ b/BudgetMasterServer/src/main/resources/languages/base_de.properties
@@ -379,6 +379,7 @@ transactions.import.status=Status
 transactions.import.status.pending=ausstehend
 transactions.import.status.imported=importiert
 transactions.import.status.skipped=übersprungen
+transactions.import.actions=Aktionen
 
 repeating.button.add=Wiederholung hinzufügen
 repeating.button.remove=Wiederholung entfernen
diff --git a/BudgetMasterServer/src/main/resources/languages/base_en.properties b/BudgetMasterServer/src/main/resources/languages/base_en.properties
index dcc9acccb..5df53283d 100644
--- a/BudgetMasterServer/src/main/resources/languages/base_en.properties
+++ b/BudgetMasterServer/src/main/resources/languages/base_en.properties
@@ -378,6 +378,7 @@ transactions.import.status=Status
 transactions.import.status.pending=pending
 transactions.import.status.imported=imported
 transactions.import.status.skipped=skipped
+transactions.import.actions=Actions
 
 repeating.button.add=Add repetition
 repeating.button.remove=Remove repetition
diff --git a/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl b/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl
index bae4fa80b..e8a9f56dc 100644
--- a/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl
+++ b/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl
@@ -192,6 +192,7 @@
                 <td class="bold">${locale.getString("transaction.new.label.date")}</td>
                 <td class="bold">${locale.getString("transaction.new.label.name")}</td>
                 <td class="bold">${locale.getString("transaction.new.label.amount")}</td>
+                <td class="bold">${locale.getString("transactions.import.actions")}</td>
             </tr>
 
             <#list csvTransactions as csvTransaction>
@@ -200,6 +201,9 @@
                     <td>${csvTransaction.getDate()}</td>
                     <td>${csvTransaction.getName()}</td>
                     <td>${csvTransaction.getAmount()}</td>
+                    <td>
+                        <@header.buttonFlat url='/transactionImport/' + csvTransaction?index + '/skip' icon='block' localizationKey='' classes="no-padding text-default button-request-transaction-import-skip"/>
+                    </td>
                 </tr>
             </#list>
         </table>
-- 
GitLab