From d5d16711af3eeee545dd5f6ecc0bd460b21a465b Mon Sep 17 00:00:00 2001
From: c2038058 <gillj8@cardiff.ac.uk>
Date: Fri, 10 Dec 2021 12:36:31 +0000
Subject: [PATCH] UserFavouriteDeleter fully logged

---
 .../services/UserFavouriteDeleter.java        | 29 ++++++++++++++-----
 .../restControllers/BusinessFavouriter.java   |  7 +----
 src/main/resources/database/schema.sql        |  3 +-
 3 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/example/clientproject/services/UserFavouriteDeleter.java b/src/main/java/com/example/clientproject/services/UserFavouriteDeleter.java
index 5743db7..d587616 100644
--- a/src/main/java/com/example/clientproject/services/UserFavouriteDeleter.java
+++ b/src/main/java/com/example/clientproject/services/UserFavouriteDeleter.java
@@ -1,28 +1,41 @@
 package com.example.clientproject.services;
 
+import com.example.clientproject.service.LoggingService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpSession;
+
 @Service
 public class UserFavouriteDeleter {
 
-    @Autowired
     JdbcTemplate jdbc;
+    LoggingService loggingService;
+
+    public UserFavouriteDeleter(JdbcTemplate jdbc, LoggingService loggingService) {
+        this.jdbc = jdbc;
+        this.loggingService = loggingService;
+    }
 
     /**
      * Takes a userfavourite DTO and removes it from the database.
-     * @param usfDTO
+     * @param usfDTO - usfDTO
+     * @param session - session
      */
-    public void delete(UserFavouriteDTO usfDTO){
+    public void delete(UserFavouriteDTO usfDTO, HttpSession session){
 
-        String query = "DELETE FROM User_Shop_Links WHERE (Shop_Id = " +
+        String query = "DELETE FROM mydb.User_Shop_Links WHERE (Shop_Id = " +
                 usfDTO.getShopId() +" AND User_Id = " +
                 usfDTO.getUserId() +")";
-
-        //System.out.println(query);
-
         jdbc.execute(query);
-
+        // Log the change
+        loggingService.logEvent(
+                "UserShopLink Deleted",
+                session,
+                "UserShopLink deleted with Shop Id: " + usfDTO.getShopId() +
+                        " and User Id: " + usfDTO.getUserId() +
+                        " in UserFavouriteDeleter.delete()"
+        );
     }
 }
diff --git a/src/main/java/com/example/clientproject/web/restControllers/BusinessFavouriter.java b/src/main/java/com/example/clientproject/web/restControllers/BusinessFavouriter.java
index 9841b2c..ba7207c 100644
--- a/src/main/java/com/example/clientproject/web/restControllers/BusinessFavouriter.java
+++ b/src/main/java/com/example/clientproject/web/restControllers/BusinessFavouriter.java
@@ -25,11 +25,6 @@ public class BusinessFavouriter {
     }
 
 
-    /**
-     *
-     * @param submitted form, contains a UserID and ShopID
-     * @return ERROR or OK depending on whether it any errors are thrown.
-     */
     @PostMapping("/favouriteBusiness")
     public String favouriteBusiness(UserFavouriteForm uff, HttpSession session){
         UserFavouriteDTO ufDTO;
@@ -40,7 +35,7 @@ public class BusinessFavouriter {
         }
         try{
             if(toggleFavourite.alreadyInDb(ufDTO)){
-                deleteFavourite.delete(ufDTO);
+                deleteFavourite.delete(ufDTO, session);
             }else{
                 saveFavourite.save(ufDTO);
             }
diff --git a/src/main/resources/database/schema.sql b/src/main/resources/database/schema.sql
index 6cdf1a5..bc85669 100644
--- a/src/main/resources/database/schema.sql
+++ b/src/main/resources/database/schema.sql
@@ -351,4 +351,5 @@ INSERT INTO Events (Event_Name) VALUES ('New Social');
 INSERT INTO Events (Event_Name) VALUES ('New User Permission');
 INSERT INTO Events (Event_Name) VALUES ('Stamp Board Updated');
 INSERT INTO Events (Event_Name) VALUES ('Reward Deleted');
-INSERT INTO Events (Event_Name) VALUES ('Shop Updated');
\ No newline at end of file
+INSERT INTO Events (Event_Name) VALUES ('Shop Updated');
+INSERT INTO Events (Event_Name) VALUES ('UserShopLink Deleted');
\ No newline at end of file
-- 
GitLab