diff --git a/WEB-INF/src/controleurs/Feed.java b/WEB-INF/src/controleurs/Feed.java index b86d367a8983d5b7d597ce85edb554000f534593..2cf8653d8d01689d0460d79a89a453d15b3e345d 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 bf26557fb3a0e72dc7520abca2c02e9e48fa4cef..c1b98bc62db6f27f9fca4053f0386be9a48d91ce 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 a8138c1ab0534b21430c328607139b80e33ee83b..384eea6339fe5db5999e941d9959872c656a098b 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 39c7601611c8d5d94c9624ba752c730c2686f6d6..967c672a3717854c43c6733e2bce2cc5b7184511 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 2a32cdf083281b93d35ed51f47db5c81cbcc630a..dd86a2f3e0ac6fe8ca825a2584f91fb6c4449474 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