From bedbd7bd6f1f6e00204d2b6d8df57e4e7b19ebbf Mon Sep 17 00:00:00 2001
From: Connor <brockcc1@cardiff.ac.uk>
Date: Wed, 6 Dec 2023 02:45:09 +0000
Subject: [PATCH] Adding integration into the current Users class to pull
 dragonstale QR code information out.

---
 .../java/Team5/SmartTowns/Data/MockUser.java    | 17 +++++++++++++++++
 .../java/Team5/SmartTowns/Data/QRCodes.java     |  4 ++++
 .../SmartTowns/trails/TrailsController.java     | 17 +++++++++--------
 src/main/java/Team5/SmartTowns/users/User.java  |  5 +++--
 .../Team5/SmartTowns/users/UserRepository.java  |  1 +
 .../SmartTowns/users/UserRepositoryJDBC.java    | 13 ++++++++++---
 6 files changed, 44 insertions(+), 13 deletions(-)
 create mode 100644 src/main/java/Team5/SmartTowns/Data/MockUser.java
 create mode 100644 src/main/java/Team5/SmartTowns/Data/QRCodes.java

diff --git a/src/main/java/Team5/SmartTowns/Data/MockUser.java b/src/main/java/Team5/SmartTowns/Data/MockUser.java
new file mode 100644
index 00000000..6a6ec7f6
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/MockUser.java
@@ -0,0 +1,17 @@
+package Team5.SmartTowns.Data;
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+
+import java.util.List;
+
+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/Data/QRCodes.java b/src/main/java/Team5/SmartTowns/Data/QRCodes.java
new file mode 100644
index 00000000..ef350eb4
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/QRCodes.java
@@ -0,0 +1,4 @@
+package Team5.SmartTowns.Data;
+
+public class QRCodes {
+}
diff --git a/src/main/java/Team5/SmartTowns/trails/TrailsController.java b/src/main/java/Team5/SmartTowns/trails/TrailsController.java
index 37548995..020eaf18 100644
--- a/src/main/java/Team5/SmartTowns/trails/TrailsController.java
+++ b/src/main/java/Team5/SmartTowns/trails/TrailsController.java
@@ -45,14 +45,15 @@ public class TrailsController {
     }
 
 
-//    //
-//    @GetMapping("dragonstale/{qrCode}/{id}")
-//    public String qrCodeCheck(@PathVariable Optional<String> qrCode, @PathVariable Optional<Integer> id){
-//        if (qrCode.isPresent() && id.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 84887664..e5214802 100644
--- a/src/main/java/Team5/SmartTowns/users/User.java
+++ b/src/main/java/Team5/SmartTowns/users/User.java
@@ -16,15 +16,16 @@ public class User {
     String name;
     String imgPath;
     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)
 
-    public User(int id, String email, String name, int dragonProgress) {
+    public User(int id, String email, String name, int dragonProgress, HashMap<Integer, Boolean> dragonstaleLandmarkIDs) {
         this.id = id;
         this.email = email;
         this.name = name;
         this.dragonProgress = dragonProgress;
+        this.dragonstaleLandmarkIDs = dragonstaleLandmarkIDs;
         imgPath = findImagePath();
     }
 
diff --git a/src/main/java/Team5/SmartTowns/users/UserRepository.java b/src/main/java/Team5/SmartTowns/users/UserRepository.java
index 9f4e828f..bbdb7ece 100644
--- a/src/main/java/Team5/SmartTowns/users/UserRepository.java
+++ b/src/main/java/Team5/SmartTowns/users/UserRepository.java
@@ -8,5 +8,6 @@ public interface UserRepository {
     List<User> getAllUsers();
 //    Map<Long, Integer> getBadgeProgress(int id);
     Map<Long, Boolean> getStickers(int id);
+    Map<Integer, Boolean> getTest(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 9b24461d..9bf388db 100644
--- a/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java
+++ b/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java
@@ -12,22 +12,22 @@ import java.util.Map;
 
 @Repository
 public class UserRepositoryJDBC implements UserRepository{
-
     private JdbcTemplate jdbc;
     private RowMapper<User> userMapper;
+    private
 
     public UserRepositoryJDBC(JdbcTemplate aJdbc){
         this.jdbc = aJdbc;
         setUserMapper();
     }
 
-
     private void setUserMapper(){
         userMapper = (rs, i) -> new User(
                 rs.getInt("userID"),
                 rs.getString("email"),
                 rs.getString("name"),
-                rs.getInt("dragonProgress")
+                rs.getInt("dragonProgress"),
+                rs.getObject("dragonstaleLandmarkIDs", getTest())
         );
     }
 
@@ -37,6 +37,7 @@ public class UserRepositoryJDBC implements UserRepository{
         return jdbc.query(sql, userMapper);
     }
 
+
     @Override
     public User getUser(int id){
         String sql= "SELECT * FROM users WHERE userID="+id;
@@ -55,6 +56,12 @@ 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, Integer> getBadgeProgress(int id){
-- 
GitLab