From 230155df933526515c0da64379b0f571ab46b28c Mon Sep 17 00:00:00 2001
From: Rhys Evans <EvansRM17@cardiff.ac.uk>
Date: Mon, 27 Nov 2023 21:46:56 +0000
Subject: [PATCH] created basic thymeleaf form with basic get/postMapping
 functionality

---
 build.gradle                                  |  3 ++
 .../Team5/SmartTowns/Landmarks/Landmarks.java | 12 +++++-
 .../SmartTowns/Landmarks/LandmarksArray.java  | 14 +++++++
 .../Landmarks/LandmarksController.java        | 41 ++++++++++++++++---
 .../resources/templates/LandmarkFormTh.html   | 31 ++++++++++++++
 .../templates/Landmarks/LandmarkFormTh.html   | 20 ---------
 6 files changed, 94 insertions(+), 27 deletions(-)
 create mode 100644 src/main/resources/templates/LandmarkFormTh.html
 delete mode 100644 src/main/resources/templates/Landmarks/LandmarkFormTh.html

diff --git a/build.gradle b/build.gradle
index de322fce..35e48fec 100644
--- a/build.gradle
+++ b/build.gradle
@@ -28,6 +28,9 @@ dependencies {
 	developmentOnly 'org.springframework.boot:spring-boot-devtools'
 	annotationProcessor 'org.projectlombok:lombok'
 	testImplementation 'org.springframework.boot:spring-boot-starter-test'
+	implementation 'org.springframework.boot:spring-boot-starter-validation'
+//	implementation 'org.springframework.boot:spring-boot-starter-jdbc'
+//	implementation 'org.mariadb.jdbc:mariadb-java-client:2.1.2'
 }
 
 tasks.named('bootBuildImage') {
diff --git a/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java b/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java
index 08589245..e6b284ff 100644
--- a/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java
+++ b/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java
@@ -1,5 +1,8 @@
 package Team5.SmartTowns.Landmarks;
 
+import lombok.AllArgsConstructor;
+import lombok.Data;
+@Data
 public class Landmarks {
     private String landmarkName;
     private String landmarkDescription;
@@ -7,12 +10,17 @@ public class Landmarks {
     private int trailID;
 
 
+    public Landmarks(){
+        this.landmarkName ="";
+        this.landmarkDescription ="";
+        this.landmarkLocation ="";
+        this.trailID =0;
+    }
+
     public Landmarks(String landmarkName, String landmarkDescription, String landmarkLocation, int trailID) {
         this.landmarkName = landmarkName;
         this.landmarkDescription = landmarkDescription;
         this.landmarkLocation = landmarkLocation;
         this.trailID = trailID;
     }
-
-
 }
diff --git a/src/main/java/Team5/SmartTowns/Landmarks/LandmarksArray.java b/src/main/java/Team5/SmartTowns/Landmarks/LandmarksArray.java
index 78fc4363..0d246dda 100644
--- a/src/main/java/Team5/SmartTowns/Landmarks/LandmarksArray.java
+++ b/src/main/java/Team5/SmartTowns/Landmarks/LandmarksArray.java
@@ -9,8 +9,22 @@ public class LandmarksArray {
 
     LandmarksArray() {
         landmarksList = new ArrayList<>(); //ArrayList is mutable
+        landmarksList.addAll(
+                List.of(
+                        new Landmarks("park","desc","loc",2)
+                )
+        );
 
 
     }
 
+
+//    public static UserArray getInstance() {
+//        if (singleton == null) {
+//            singleton = new UserArray();
+//
+//        }
+//        return singleton;
+//    }
+
 }
diff --git a/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java b/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java
index b5a56d82..3148324b 100644
--- a/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java
+++ b/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java
@@ -1,21 +1,52 @@
 package Team5.SmartTowns.Landmarks;
 
-
 import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
 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.servlet.ModelAndView;
+//import jakarta.validation.Valid;
 
 @Controller
 public class LandmarksController {
 
+
     @GetMapping("/landmarkSubmission")
     public ModelAndView landmarkSubmission(){
-        ModelAndView modelAndView = new ModelAndView("Landmarks/LandmarkFormTh.html");
-        modelAndView.addAllObjects("Landmarks", new Landmarks());
-        return modelAndView;
-        
+        ModelAndView modelAndView1 = new ModelAndView("LandmarkFormTh.html");
+        modelAndView1.addObject("landmarkData", new Landmarks());
+        return modelAndView1;
+
     }
 
 
+    @PostMapping("/landmarkSub")
+    public ModelAndView landmarkSent( @ModelAttribute("landmarkData") Landmarks landmarks ) {
+
+//       LandmarksArray userArray = LandmarksArray.getInstance();
+//        Landmarks newUserSubmission = new Landmarks(landmarkData.getFormUsername(),userSubmission.getFormEmail(),
+//                userSubmission.getFormPark(), userSubmission.getFormDescription(),userSubmission.getFormCafe(), userSubmission.getFormToilets());
+//        userArray.addUserSubmission(newUserSubmission);
+//        System.out.println(userArray.getFormItems());
+//
+        ModelAndView modelAndView = new ModelAndView("redirect:/test.html");
+        return modelAndView;
+
+
+
+
+
+    }
+
+//    @PostMapping("/landmarkSubmission")
+//    public ModelAndView landmarkSubmission( Landmarks landmarks){
+//        System.out.println(landmarks);
+//        ModelAndView modelAndView = new ModelAndView("redirect:/thankyou.html");
+//
+//        return modelAndView;
+//
+//    }
 
 }
diff --git a/src/main/resources/templates/LandmarkFormTh.html b/src/main/resources/templates/LandmarkFormTh.html
new file mode 100644
index 00000000..9a2bf495
--- /dev/null
+++ b/src/main/resources/templates/LandmarkFormTh.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Landmark Sign Up</title>
+</head>
+<body>
+<main>
+    <form action="/landmarkSub" id="landmarkSubmission" name="landmarkSubmission" method="post" th:object="${landmarkData}">
+
+
+        <label>Business Name:
+           <input type="text" th:field="*{landmarkName}">
+        </label><br>
+        <label>Please Describe Your Business:<br>
+            <textarea th:field="*{landmarkDescription}" rows="6" cols="80"></textarea>
+        </label><br>
+        <label>Your town/city:
+            <input type="text" th:field="*{landmarkName}">
+        </label><br>
+        <label>Trail:
+            <input type="text" th:field="*{trailID}">
+        </label><br>
+
+        <input type="submit">
+    </form>
+
+</main>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/Landmarks/LandmarkFormTh.html b/src/main/resources/templates/Landmarks/LandmarkFormTh.html
deleted file mode 100644
index 74e5194d..00000000
--- a/src/main/resources/templates/Landmarks/LandmarkFormTh.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Landmark Sign Up</title>
-</head>
-<body>
-<main>
-    <form action="/LandmarkSubmission" name="landmarkSubmission">
-
-
-
-
-
-    </form>
-
-</main>
-
-</body>
-</html>
\ No newline at end of file
-- 
GitLab