From 8f2bf6a3cc167a02af4b84a9182b7b77cb4e4c0a Mon Sep 17 00:00:00 2001
From: Connor <brockcc1@cardiff.ac.uk>
Date: Thu, 7 Dec 2023 14:01:21 +0000
Subject: [PATCH] Commented out code for URL query string integration to get a
 functioning QR code scanner for presentation

---
 .../SmartTowns/Data/DatabaseController.java   |  6 +++---
 .../java/Team5/SmartTowns/Data/MockUser.java  |  1 -
 .../Team5/SmartTowns/Landmarks/Landmarks.java |  2 +-
 .../SmartTowns/trails/TrailsController.java   | 18 +++++++++-------
 .../java/Team5/SmartTowns/users/User.java     | 10 ++++-----
 .../SmartTowns/users/UserRepository.java      |  3 ++-
 .../SmartTowns/users/UserRepositoryJDBC.java  | 21 +++++++++++--------
 src/main/resources/data.sql                   |  3 +--
 src/main/resources/schema.sql                 |  3 ++-
 9 files changed, 36 insertions(+), 31 deletions(-)

diff --git a/src/main/java/Team5/SmartTowns/Data/DatabaseController.java b/src/main/java/Team5/SmartTowns/Data/DatabaseController.java
index 0d38e955..6c6b60ed 100644
--- a/src/main/java/Team5/SmartTowns/Data/DatabaseController.java
+++ b/src/main/java/Team5/SmartTowns/Data/DatabaseController.java
@@ -7,17 +7,17 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.servlet.ModelAndView;
 
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
 import java.util.*;
 @Controller
 public class DatabaseController {
-
-
     @Autowired
     private locationRepository locationRepository;
     @Autowired
     private trailsRepository trailsRepository;
 
-
     @GetMapping("/trailList")
     public ModelAndView trailList() {
         ModelAndView mav1 = new ModelAndView("towns/trailsData");
diff --git a/src/main/java/Team5/SmartTowns/Data/MockUser.java b/src/main/java/Team5/SmartTowns/Data/MockUser.java
index 6a6ec7f6..48748a17 100644
--- a/src/main/java/Team5/SmartTowns/Data/MockUser.java
+++ b/src/main/java/Team5/SmartTowns/Data/MockUser.java
@@ -9,7 +9,6 @@ public class MockUser {
 
     private JdbcTemplate jdbc;
     private RowMapper<trail> trailMapper;
-
     public List<trail> getAllTrails(){
         String sql= "SELECT * FROM trails";
         return jdbc.query(sql, trailMapper);
diff --git a/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java b/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java
index 81c6f5b7..f1c7b5fc 100644
--- a/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java
+++ b/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java
@@ -18,7 +18,7 @@ public class Landmarks {
     // Initialized object to getID from trail.
 
     //Predefined Landmark for Dragons Tale.
-    private static List<Landmarks> landmarksDragonstrail = List.of(
+    public static List<Landmarks> landmarksDragonstrail = List.of(
             new Landmarks( 1, "A scent of...Dragon", "The Dragon has been spotted near by, find the QR code to continue" , "Start your discovery, at the sweet shop."),
             new Landmarks( 2, "They've been found!", "Don't let them escape, find the next QR code to continue!", "Location test")
     );
diff --git a/src/main/java/Team5/SmartTowns/trails/TrailsController.java b/src/main/java/Team5/SmartTowns/trails/TrailsController.java
index 020eaf18..004fdabd 100644
--- a/src/main/java/Team5/SmartTowns/trails/TrailsController.java
+++ b/src/main/java/Team5/SmartTowns/trails/TrailsController.java
@@ -13,6 +13,8 @@ import java.util.Optional;
 
 import static Team5.SmartTowns.Landmarks.Landmarks.landmarksDragonstrail;
 
+//import static Team5.SmartTowns.Landmarks.Landmarks.landmarksDragonstrail;
+
 @Controller
 public class TrailsController {
     @GetMapping("/allTrails")
@@ -46,14 +48,14 @@ public class TrailsController {
 
 
     //
-    @GetMapping("dragonstale/{qrCode}/{id}")
-    public String qrCodeCheck(@PathVariable Optional<String> qrCode, @PathVariable Optional<Integer> id){
-        if (qrCode.isPresent()){
-
-            //Check if ID is present, if do this, if not dfo that.
-
-        }
-    }
+//    @GetMapping("dragonstale/{qrCode}/{id}")
+//    public String qrCodeCheck(@PathVariable Optional<String> qrCode, @PathVariable Optional<Integer> id){
+//        if (qrCode.isPresent()){
+//
+//            //Check if ID is present, if do this, if not dfo that.
+//
+//        }
+//    }
 
 }
 
diff --git a/src/main/java/Team5/SmartTowns/users/User.java b/src/main/java/Team5/SmartTowns/users/User.java
index e5214802..1e13ad56 100644
--- a/src/main/java/Team5/SmartTowns/users/User.java
+++ b/src/main/java/Team5/SmartTowns/users/User.java
@@ -5,12 +5,13 @@ import Team5.SmartTowns.rewards.Sticker;
 import lombok.Data;
 
 import java.io.File;
+import java.sql.Connection;
+import java.sql.DriverManager;
 import java.util.HashMap;
 import java.util.Map;
 
 @Data
 public class User {
-
     int id;
     String email; //Validation would be done by email, since they will have that
     String name;
@@ -18,18 +19,17 @@ public class User {
     int dragonProgress;
     Map<Badge, Integer> badgeProgress = new HashMap<>(); // Demonstrates the progress towards a specific badge (0-100)
     Map<Sticker, Boolean> hasStickers = new HashMap<>(); // True if User has sticker (key)
-     Map<Integer, Boolean> dragonstaleLandmarkIDs = new HashMap<>(); // Storing the IDs of the landmarks associated with Dragonstale, as well as if the user has visited it before (boolean)
+    Map<Integer, Boolean> dragonstaleLandmarkIDs = new HashMap<>(); // Storing the IDs of the landmarks associated with Dragonstale, as well as if the user has visited it before (boolean)
 
-    public User(int id, String email, String name, int dragonProgress, HashMap<Integer, Boolean> dragonstaleLandmarkIDs) {
+    public User(int id, String email, String name, int dragonProgress) {
         this.id = id;
         this.email = email;
         this.name = name;
         this.dragonProgress = dragonProgress;
-        this.dragonstaleLandmarkIDs = dragonstaleLandmarkIDs;
+//        this.dragonstaleLandmarkIDs = dragonstaleLandmarkIDs;
         imgPath = findImagePath();
     }
 
-
     private String findImagePath(){
         /* Finds the image in the Path folder, if image is not found assigns default image */
         String imgPath = "images/users/" + id + ".jpg";
diff --git a/src/main/java/Team5/SmartTowns/users/UserRepository.java b/src/main/java/Team5/SmartTowns/users/UserRepository.java
index bbdb7ece..c6cca350 100644
--- a/src/main/java/Team5/SmartTowns/users/UserRepository.java
+++ b/src/main/java/Team5/SmartTowns/users/UserRepository.java
@@ -8,6 +8,7 @@ public interface UserRepository {
     List<User> getAllUsers();
 //    Map<Long, Integer> getBadgeProgress(int id);
     Map<Long, Boolean> getStickers(int id);
-    Map<Integer, Boolean> getTest(int id);
+//    Map<Integer, Boolean> getTest(int id);
+//    Map<Long, Boolean> getDTCompletion(int id);
     User getUser(int id);
 }
diff --git a/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java
index 9bf388db..93b0cf5d 100644
--- a/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java
+++ b/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java
@@ -5,7 +5,6 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.stereotype.Repository;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -14,7 +13,6 @@ import java.util.Map;
 public class UserRepositoryJDBC implements UserRepository{
     private JdbcTemplate jdbc;
     private RowMapper<User> userMapper;
-    private
 
     public UserRepositoryJDBC(JdbcTemplate aJdbc){
         this.jdbc = aJdbc;
@@ -26,8 +24,7 @@ public class UserRepositoryJDBC implements UserRepository{
                 rs.getInt("userID"),
                 rs.getString("email"),
                 rs.getString("name"),
-                rs.getInt("dragonProgress"),
-                rs.getObject("dragonstaleLandmarkIDs", getTest())
+                rs.getInt("dragonProgress")
         );
     }
 
@@ -56,11 +53,17 @@ public class UserRepositoryJDBC implements UserRepository{
         return progress;
     }
 
-    @Override
-    public Map<Integer, Boolean> getDTCompletion(int id){
-        //Loop over multiple different key-value pairs to find the one that's needed.
-        String sql = "SELECT  "
-    }
+//    @Override
+//    public Map<Long, Boolean> getDTCompletion(int id){
+//        //Using prepared statement to prevent SQL injections
+//        String sql = "SELECT userid, qrCodeSCAN FROM testuser WHERE userID= ?";
+//        List<Map<String, Object>> dtQuery = jdbc.queryForList(sql, id);
+//        Map<Long, Boolean> dtProgress = new HashMap<>();
+//        for (Map<String, Object> result : dtQuery) {
+//            dtProgress.put((Long)result.get("stickerID"), (boolean)result.get("hasSticker"));
+//        }
+//        return dtProgress;
+//    }
 
 
 //    @Override
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 5ab7f183..40fefaca 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -54,5 +54,4 @@ insert into badgeprogress (userID, badgeID, progress) value ('2', '2', '70');
 delete from stickerprogress;
 insert into stickerprogress (userID, stickerID, hasSticker) value ('1', '1', true);
 insert into stickerprogress (userID, stickerID, hasSticker) value ('1', '3', true);
-<<<<<<< HEAD
-insert into stickerprogress (userID, stickerID, hasSticker) value ('2', '2', true);
\ No newline at end of file
+insert into stickerprogress (userID, stickerID, hasSticker) value ('2', '2', true);
diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql
index 92b8d4e0..44b98345 100644
--- a/src/main/resources/schema.sql
+++ b/src/main/resources/schema.sql
@@ -23,7 +23,8 @@ create table if not exists users
     userID bigint auto_increment primary key,
     email varchar(128),
     name varchar(128),
-    dragonProgress int
+    dragonProgress int,
+    dragonsLandmarkIDs longtext
 ) engine=InnoDB;
 
 drop table if exists badges;
-- 
GitLab