From c450ce944ee7ebf755a2664dc9abb7c1a1182ee5 Mon Sep 17 00:00:00 2001
From: Charlie Darques <charlie.darques.etu@univ-lille.fr>
Date: Tue, 11 Mar 2025 13:19:19 +0100
Subject: [PATCH] =?UTF-8?q?m=C3=AAme=20bug=20que=20pour=20followThread,=20?=
 =?UTF-8?q?postMessage=20ne=20fait=20pas=20le=20lien=20avec=20la=20bdd,=20?=
 =?UTF-8?q?=C3=A0=20corriger?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 WEB-INF/src/controleurs/Feed.java        |  3 +-
 WEB-INF/src/controleurs/PostMessage.java | 48 ++++++++++++++++++++++++
 WEB-INF/src/dao/UserDAO.java             | 12 +++---
 3 files changed, 57 insertions(+), 6 deletions(-)
 create mode 100644 WEB-INF/src/controleurs/PostMessage.java

diff --git a/WEB-INF/src/controleurs/Feed.java b/WEB-INF/src/controleurs/Feed.java
index a1b4a96..faafc66 100644
--- a/WEB-INF/src/controleurs/Feed.java
+++ b/WEB-INF/src/controleurs/Feed.java
@@ -58,8 +58,9 @@ public class Feed extends HttpServlet {
                         out.println("<p class=\"msgContent\">" + message.getContent() + "</p>");
 
                         // le formulaire appelle une servlet qui poste le message et redirige vers cette page avec les messages updatés
-                        out.println("<form action=\"#\" method=\"post\">");
+                        out.println("<form action=\"http://localhost:8080/s4a021-web-backend/PostMessage\" method=\"post\">");
                         out.println("<textarea id=\"message\" name=\"message\" rows=\"3\" cols=\"45\" placeholder=\"Post a message in this thread\"></textarea>");
+                        out.println("<input name=\"threadid\" type=\"hidden\" value=\"" + msgThread.getId() +"\">");
                         out.println("<button type=\"submit\">Post</button>");
                         out.println("</form>");
 
diff --git a/WEB-INF/src/controleurs/PostMessage.java b/WEB-INF/src/controleurs/PostMessage.java
new file mode 100644
index 0000000..c179387
--- /dev/null
+++ b/WEB-INF/src/controleurs/PostMessage.java
@@ -0,0 +1,48 @@
+package controleurs;
+
+import java.io.IOException;
+import java.sql.SQLException;
+
+import dao.ThreadDAO;
+import dao.UserDAO;
+import dto.User;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+
+@WebServlet("/PostMessage")
+public class PostMessage extends HttpServlet {
+    public void service(HttpServletRequest req, HttpServletResponse res) throws IOException {
+        User user = (User) req.getSession().getAttribute("user");
+        UserDAO userDAO = new UserDAO();
+        ThreadDAO threadDAO = new ThreadDAO();
+
+        if (user != null) {
+            String message = null;
+            int senderID = user.getId();
+            int threadID = 0;
+
+            if (req.getParameter("message") != null) {
+                message = req.getParameter("message");
+            }
+            if (req.getParameter("threadid") != null) {
+                threadID = Integer.parseInt(req.getParameter("threadid"));
+            }
+
+            if (!message.isEmpty() && senderID != 0 && threadID != 0) {
+                System.out.println("dans le if");
+                try {
+                    userDAO.postMessage(user, threadDAO.getThreadById(threadID), message);
+                    System.out.println("message posté");
+                }
+                catch (SQLException sqle) {
+                    sqle.getStackTrace();
+                }
+
+                res.sendRedirect("http://localhost:8080/s4a021-web-backend/Welcome");
+            }
+        }
+    }
+}
diff --git a/WEB-INF/src/dao/UserDAO.java b/WEB-INF/src/dao/UserDAO.java
index 5465803..4ff0869 100644
--- a/WEB-INF/src/dao/UserDAO.java
+++ b/WEB-INF/src/dao/UserDAO.java
@@ -148,9 +148,7 @@ public class UserDAO {
         PreparedStatement ps = this.con.prepareStatement("INSERT INTO follow VALUES(?, ?, ?)");
         try {
             ps.setInt(1, user.getId());
-            System.out.println(user.getId());
             ps.setInt(2, thread.getId());
-            System.out.println(thread.getId());
             ps.setString(3, "TO_DATE(" +LocalDate.now().toString() + ", 'YYYY/MM/DD')");
             ps.executeUpdate();
         }
@@ -161,12 +159,16 @@ public class UserDAO {
 
     // Poster un message dans un thread
     public void postMessage(User user, MyThread thread, String message) throws SQLException {
-        PreparedStatement ps = this.con.prepareStatement("INSERT INTO msg (userID_msg, threadID, msg) VALUES(?, ?, ?)");
+        PreparedStatement ps = this.con.prepareStatement("INSERT INTO msg (userID_msg, threadID, msg, posted_at) VALUES(?, ?, ?, ?)");
         try {
-            ps.setInt(1, user.getId());
+            System.out.println("dans le try de post message");
+            ps.setString(1, ""+user.getId());
             // PROBLEME ICI 
-            ps.setInt(2, (int) thread.getId());
+            ps.setString(2, ""+thread.getId());
             ps.setString(3, message);
+            ps.setString(4, "TO_DATE(" + LocalDate.now().toString() + ", 'YYYY/MM/DD')");
+            System.out.println(ps);
+            ps.executeUpdate();
         }
         catch (SQLException sqle) {
             sqle.getStackTrace();
-- 
GitLab