From cd44b1a1e561d871f979821679788a82b8c906d7 Mon Sep 17 00:00:00 2001
From: Charlie Darques <charlie.darques.etu@univ-lille.fr>
Date: Sat, 15 Mar 2025 19:01:09 +0100
Subject: [PATCH] =?UTF-8?q?refacto=20et=20corrections=20non=20test=C3=A9es?=
 =?UTF-8?q?=20pour=20like/unlike=20un=20message?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 WEB-INF/src/controleurs/Account.java     |   2 +-
 WEB-INF/src/controleurs/LikeMessage.java | 121 +++++++++++++----------
 WEB-INF/src/dao/UserDAO.java             |  18 +++-
 3 files changed, 84 insertions(+), 57 deletions(-)

diff --git a/WEB-INF/src/controleurs/Account.java b/WEB-INF/src/controleurs/Account.java
index ddc2dcd..170ad05 100644
--- a/WEB-INF/src/controleurs/Account.java
+++ b/WEB-INF/src/controleurs/Account.java
@@ -65,7 +65,7 @@ public class Account extends HttpServlet {
 //                out.println("</form>");
 
                 out.println("<h2>DELETE YOUR ACCOUNT</h2>");
-                out.println("<form class=\"delForm\" action=\"/s4a021-web-backend/deletedAccount\">");
+                out.println("<form class=\"delForm\" action=\"/s4a021-web-backend/deletedAccount\" method=\"post\">");
                 out.println("<button type=\"submit\">Delete Account</button>");
                 out.println("</form>");
 
diff --git a/WEB-INF/src/controleurs/LikeMessage.java b/WEB-INF/src/controleurs/LikeMessage.java
index 1da61e5..dc46a7d 100644
--- a/WEB-INF/src/controleurs/LikeMessage.java
+++ b/WEB-INF/src/controleurs/LikeMessage.java
@@ -1,53 +1,68 @@
-//package controleurs;
-//
-//import java.io.IOException;
-//import java.sql.SQLException;
-//
-//import dao.ThreadDAO;
-//import dao.UserDAO;
-//import dto.Message;
-//import dto.User;
-//import jakarta.servlet.annotation.WebServlet;
-//import jakarta.servlet.http.HttpServlet;
-//import jakarta.servlet.http.HttpServletRequest;
-//import jakarta.servlet.http.HttpServletResponse;
-//
-//@WebServlet("/LikeMessage")
-//public class LikeMessage extends HttpServlet {
-//    public void service (HttpServletRequest req, HttpServletResponse res) throws IOException {
-//        if (req.getSession().getAttribute("user") != null) {
-//            User user = (User) req.getSession().getAttribute("user");
-//
-//            UserDAO userDao = new UserDAO();
-//            ThreadDAO threadDao = new ThreadDAO();
-//
-//            Message msg = req.getParameter("messageid");
-//
-//            // à modifier
-//            boolean messageLiked = false;
-//
-//            if (!messageLiked) {
-//                try {
-//                    userDao.reactToMsg(user, msg);
-//                }
-//                catch (SQLException sqle) {
-//                    sqle.getStackTrace();
-//                }
-//            }
-//            else {
-//                try {
-//                    userDao.unreactToMsg(user, msg); // méthode à créer
-//                }
-//                catch (SQLException sqle) {
-//                    sqle.getStackTrace();
-//                }
-//            }
-//            res.sendRedirect("http://localhost:8080/s4a021-web-backend/Welcome");
-//        }
-//        else {
-//            res.sendRedirect("http://localhost:8080/s4a021-web-backend/index.html");
-//        }
-//    }
-//}
-
-// TODO : à décommenter
\ No newline at end of file
+package controleurs;
+
+import java.io.IOException;
+import java.sql.SQLException;
+
+import dao.MessageDAO;
+import dao.ThreadDAO;
+import dao.UserDAO;
+import dto.Message;
+import dto.User;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+@WebServlet("/LikeMessage")
+public class LikeMessage extends HttpServlet {
+   public void service (HttpServletRequest req, HttpServletResponse res) throws IOException {
+       if (req.getSession().getAttribute("user") != null) {
+            User user = (User) req.getSession().getAttribute("user");
+
+            UserDAO userDao = new UserDAO();
+            ThreadDAO threadDao = new ThreadDAO();
+            MessageDAO messageDao = new MessageDAO();
+
+            Message msg = null;
+
+            try {
+                messageDao.getMessageByID(
+                    Integer.parseInt(req.getParameter("messageid")));
+            }
+            catch (SQLException sqle) {
+                sqle.getStackTrace();
+            }
+
+            boolean messageLiked = false;
+            try {
+                messageLiked = messageDao.isMessageLikedByUser(msg, user);
+            }
+            catch (SQLException sqle) {
+                sqle.getStackTrace();
+            }         
+
+            if (!messageLiked) {
+                try {
+                    userDao.reactToMsg(user, msg);
+                }
+                catch (SQLException sqle) {
+                    sqle.getStackTrace();
+                }
+            }
+            else {
+                try {
+                    userDao.unreactToMsg(user, msg); // méthode à créer
+                }
+                catch (SQLException sqle) {
+                    sqle.getStackTrace();
+                }
+            }
+            res.sendRedirect("http://localhost:8080/s4a021-web-backend/Welcome");
+        }
+        else {
+            res.sendRedirect("http://localhost:8080/s4a021-web-backend/index.html");
+        }
+   }
+}
+
+TODO : à décommenter
\ No newline at end of file
diff --git a/WEB-INF/src/dao/UserDAO.java b/WEB-INF/src/dao/UserDAO.java
index d6e057e..9372e8a 100644
--- a/WEB-INF/src/dao/UserDAO.java
+++ b/WEB-INF/src/dao/UserDAO.java
@@ -359,8 +359,20 @@ public class UserDAO {
         return messages;
     }
 
-    public void unreactToMsg(User user, Message msg) {
-        // TODO Auto-generated method stub
-        throw new UnsupportedOperationException("Unimplemented method 'unreactToMsg'");
+    public void unreactToMsg(User user, Message msg) throws SQLException {
+        PreparedStatement ps = this.con.prepareStatement("""
+            UPDATE reactions
+            SET reaction = false
+            WHERE userID_reactions = ?
+            AND msgID_reactions = ?
+        """);
+        try {
+            ps.setInt(1, user.getId());
+            ps.setInt(2, msg.getMsgId());
+            ps.executeUpdate();
+        }
+        catch (SQLException sqle) {
+            sqle.getStackTrace();
+        }
     }
 }
\ No newline at end of file
-- 
GitLab