From 36695566fcd4256e7be0b267800ab0b82cc15e42 Mon Sep 17 00:00:00 2001 From: Charlie Darques <charlie.darques.etu@univ-lille.fr> Date: Mon, 17 Mar 2025 12:13:47 +0100 Subject: [PATCH] =?UTF-8?q?correction=20=20bug=20fonctionnalit=C3=A9=20lik?= =?UTF-8?q?e/unlike?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WEB-INF/src/controleurs/Feed.java | 2 +- WEB-INF/src/controleurs/LikeMessage.java | 22 ++++------ WEB-INF/src/controleurs/LogIn.java | 3 ++ WEB-INF/src/dao/MessageDAO.java | 36 +++++++++++++++- WEB-INF/src/dao/UserDAO.java | 52 ++++++++++++++---------- 5 files changed, 78 insertions(+), 37 deletions(-) diff --git a/WEB-INF/src/controleurs/Feed.java b/WEB-INF/src/controleurs/Feed.java index b86d367..2cf8653 100644 --- a/WEB-INF/src/controleurs/Feed.java +++ b/WEB-INF/src/controleurs/Feed.java @@ -70,7 +70,7 @@ public class Feed extends HttpServlet { boolean msgIsLiked = false; try { - msgIsLiked = messageDao.isMessageLikedByUser(message, user); + msgIsLiked = messageDao.isMessageLikedByUser(message.getMsgId(), user); } catch (SQLException sqle) { sqle.getStackTrace(); diff --git a/WEB-INF/src/controleurs/LikeMessage.java b/WEB-INF/src/controleurs/LikeMessage.java index bf26557..c1b98bc 100644 --- a/WEB-INF/src/controleurs/LikeMessage.java +++ b/WEB-INF/src/controleurs/LikeMessage.java @@ -23,19 +23,14 @@ public class LikeMessage extends HttpServlet { ThreadDAO threadDao = new ThreadDAO(); MessageDAO messageDao = new MessageDAO(); - Message msg = null; - - try { - messageDao.getMessageByID( - Integer.parseInt(req.getParameter("messageid"))); - } - catch (SQLException sqle) { - sqle.getStackTrace(); + int messageID = 0; + if (req.getParameter("messageid") != null) { + messageID = Integer.parseInt(req.getParameter("messageid")); } boolean messageLiked = false; try { - messageLiked = messageDao.isMessageLikedByUser(msg, user); + messageLiked = messageDao.isMessageLikedByUser(messageID, user); } catch (SQLException sqle) { sqle.getStackTrace(); @@ -43,7 +38,8 @@ public class LikeMessage extends HttpServlet { if (!messageLiked) { try { - userDao.reactToMsg(user, msg); + System.out.println("message liké " + messageLiked); + userDao.reactToMsg(user, messageID); } catch (SQLException sqle) { sqle.getStackTrace(); @@ -51,7 +47,8 @@ public class LikeMessage extends HttpServlet { } else { try { - userDao.unreactToMsg(user, msg); + System.out.println("message liké" + messageLiked); + userDao.unreactToMsg(user, messageID); } catch (SQLException sqle) { sqle.getStackTrace(); @@ -63,5 +60,4 @@ public class LikeMessage extends HttpServlet { res.sendRedirect("http://localhost:8080/s4a021-web-backend/index.html"); } } -} -// A TESTER \ No newline at end of file +} \ No newline at end of file diff --git a/WEB-INF/src/controleurs/LogIn.java b/WEB-INF/src/controleurs/LogIn.java index a8138c1..384eea6 100644 --- a/WEB-INF/src/controleurs/LogIn.java +++ b/WEB-INF/src/controleurs/LogIn.java @@ -18,6 +18,9 @@ public class LogIn extends HttpServlet { PrintWriter out = res.getWriter(); UserDAO userdao = new UserDAO(); User user = userdao.getUserByLogs(req.getParameter("login"), req.getParameter("pwd")); + if (user.getUserName() == null) { + res.sendRedirect("http://localhost:8080/s4a021-web-backend/index.html"); + } req.getSession().setAttribute("login", user.getUserName()); if (user == null) System.out.println("user null"); diff --git a/WEB-INF/src/dao/MessageDAO.java b/WEB-INF/src/dao/MessageDAO.java index 39c7601..967c672 100644 --- a/WEB-INF/src/dao/MessageDAO.java +++ b/WEB-INF/src/dao/MessageDAO.java @@ -35,7 +35,7 @@ public class MessageDAO { return message; } - public boolean isMessageLikedByUser(Message message, User user) throws SQLException { + public boolean isMessageLikedByUser(int messageID, User user) throws SQLException { PreparedStatement ps = this.con.prepareStatement(""" SELECT reaction FROM reactions WHERE userID_reactions = ? @@ -43,7 +43,7 @@ public class MessageDAO { """); try { ps.setInt(1, user.getId()); - ps.setInt(2, message.getMsgId()); + ps.setInt(2, messageID); ResultSet rs = ps.executeQuery(); while(rs.next()) { if (rs.getBoolean("reaction")) { @@ -51,6 +51,38 @@ public class MessageDAO { } else return false; } + if (!rs.next()) { + return false; + } + } + catch (SQLException sqle) { + sqle.getStackTrace(); + } + return false; + } + + public boolean userReactedToMessage(User user, int msgID) throws SQLException { + PreparedStatement ps = this.con.prepareStatement("SELECT * FROM reactions WHERE userid_reactions=? AND msgID_reactions=?"); + try { + ps.setInt(1, user.getId()); + ps.setInt(2, msgID); + ResultSet rs = ps.executeQuery(); + if (rs.next()) return true; + else return false; + } + catch (SQLException sqle) { + sqle.getStackTrace(); + } + return false; + } + + public boolean isInReactionTable(int msgID) throws SQLException { + PreparedStatement ps = this.con.prepareStatement("SELECT * FROM msg WHERE msgID=?"); + try { + ps.setInt(1, msgID); + ResultSet rs = ps.executeQuery(); + if (rs.next()) return true; + else return false; } catch (SQLException sqle) { sqle.getStackTrace(); diff --git a/WEB-INF/src/dao/UserDAO.java b/WEB-INF/src/dao/UserDAO.java index 2a32cdf..dd86a2f 100644 --- a/WEB-INF/src/dao/UserDAO.java +++ b/WEB-INF/src/dao/UserDAO.java @@ -234,12 +234,39 @@ public class UserDAO { } // Réagir à un message - public void reactToMsg(User user, Message msg) throws SQLException { - PreparedStatement ps = this.con.prepareStatement("INSERT INTO reactions VALUES(?, ?, ?)"); + public void reactToMsg(User user, int msgID) throws SQLException { + PreparedStatement ps = null; + MessageDAO messageDAO = new MessageDAO(); + if (messageDAO.isInReactionTable(msgID) && messageDAO.userReactedToMessage(user, msgID)) { + ps = this.con.prepareStatement("UPDATE reactions SET reaction=true WHERE userid_reactions=? AND msgid_reactions=?"); + } + else { + ps = this.con.prepareStatement("INSERT INTO reactions VALUES(?, ?, true)"); + + } + try { + ps.setInt(1, user.getId()); + ps.setInt(2, msgID); + System.out.println(ps); + ps.executeUpdate(); + } + catch (SQLException sqle) { + sqle.getStackTrace(); + } + } + + public void unreactToMsg(User user, int msgID) 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.setString(3, "true"); + ps.setInt(2, msgID); + System.out.println("requete unreact"); + ps.executeUpdate(); } catch (SQLException sqle) { sqle.getStackTrace(); @@ -363,21 +390,4 @@ public class UserDAO { } return messages; } - - 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