diff --git a/WEB-INF/src/controleurs/Feed.java b/WEB-INF/src/controleurs/Feed.java index 7d43f2cba05f29b6c340661bc123e3bba9739baf..98a7ef4e813cfdcb7d4bd2b26960336e7d981b56 100644 --- a/WEB-INF/src/controleurs/Feed.java +++ b/WEB-INF/src/controleurs/Feed.java @@ -39,15 +39,16 @@ public class Feed extends HttpServlet { out.println("<html><body><meta charset=\"utf-8\">"); out.println("<title>Welcome</title>"); - out.println("<h1>Welcome " + login + "</h1>"); - - out.println("<nav class=\"menu\">"); - out.println("<ul class=\"options_list\">"); - out.println("<li class=\"option\"><a href=\"#\">\uD83C\uDFE0 Home</a></li>"); - out.println("<li class=\"option\"><a href=\"#\">\uD83E\uDDF5 Followed</a></li>"); - out.println("<li class=\"option\"><a href=\"#\">\uD83D\uDC64 Account</a></li>"); + + out.println("<nav>"); + out.println("<ul class=\"menu\">"); + out.println("<li class=\"menu_option\"><a href=\"#\">\uD83C\uDFE0 Home</a></li>"); + out.println("<li class=\"menu_option\"><a href=\"#\">\uD83E\uDDF5 Followed</a></li>"); + out.println("<li class=\"menu_option\"><a href=\"#\">\uD83D\uDC64 Account</a></li>"); out.println("</ul></nav>"); - + + out.println("<h1>Welcome " + login + "</h1>"); + if (!messages.isEmpty()) { for (Message message : messages) { MyThread msgThread = null; @@ -59,7 +60,7 @@ public class Feed extends HttpServlet { out.println("<div class=\"message\">"); out.println("<h3 class=\"msgThread\">" + msgThread.getThreadName() + "</h3>"); out.println("<p class=\"msgContent\">" + message.getContent() + "</p>"); - out.println("<form><button class=\"react\" type=\"submit\" value=\"Like\">"); + out.println("<form><button class=\"react\" type=\"submit\" value=\"Like\">Like</button>"); out.println("</div>"); } } @@ -68,6 +69,8 @@ public class Feed extends HttpServlet { out.println("<button><a href=\"\">Discover new threads</a></button>"); } + out.println("<a href=\"http://localhost:8080/s4a021-web-backend/NewThread\">Create a new thread</a>"); + out.println("</body>"); out.println("<footer>"); out.println("Connected as " + login); diff --git a/WEB-INF/src/controleurs/NewThread.java b/WEB-INF/src/controleurs/NewThread.java new file mode 100644 index 0000000000000000000000000000000000000000..14bfaa9e1c831661326a31cefa18d12cf5303064 --- /dev/null +++ b/WEB-INF/src/controleurs/NewThread.java @@ -0,0 +1,87 @@ +package controleurs; + +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.SQLException; +import java.util.List; + +import dao.ThreadDAO; +import dao.UserDAO; +import dto.MyThread; +import dto.User; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +@WebServlet("/NewThread") +public class NewThread extends HttpServlet { + public void service (HttpServletRequest req, HttpServletResponse res) throws IOException { + if (req.getSession().getAttribute("user") != null) { + PrintWriter out = res.getWriter(); + ThreadDAO threadDAO = new ThreadDAO(); + UserDAO userDAO = new UserDAO(); + + String login = (String) req.getSession().getAttribute("login"); + User user = (User) req.getSession().getAttribute("user"); + String threadname = null; + String message = null; + boolean newThreadWasCreated = false; + + if (req.getParameter("threadname") != null) { + threadname = req.getParameter("threadname"); + } + if (req.getParameter("first_message") != null) { + message = req.getParameter("first_message"); + } + + if (threadname != null && message != null) { + try { + threadDAO.createThread(user, threadname); + List<MyThread> threadsCreated = userDAO.getThreadsCreatedByUser(user); + MyThread newThread = null; + for (MyThread t : threadsCreated) { + if (t.getThreadName().equals(threadname)) { + newThread = t; + newThreadWasCreated = true; + } + } + // PROBLEME ICI : Cannot invoke "dto.MyThread.getId()" because "<parameter2>" is null + userDAO.postMessage(user, newThread, message); + } + catch (SQLException sqle) { + sqle.getStackTrace(); + } + } + + + out.println("<html><body><meta charset=\"utf-8\">"); + out.println("<title>New thread</title>"); + + out.println("<div class=\"write\">"); + out.println("<h3>Create a new thread</h3>"); + out.println("<form action=\"http://localhost:8080/s4a021-web-backend/NewThread\" method=\"post\">"); + out.println("<input name=\"threadname\" type=\"text\" placeholder=\"Name of new thread\">"); + out.println("<input name=\"first_message\" type=\"text\" placeholder=\"Post the first message of your new thread!\">"); + out.println("<button type=\"submit\">Create</button>"); + out.println("</form>"); + + if (newThreadWasCreated) { + out.println("<p class=\"information\">The thread " + threadname + " was successfully created</p>"); + } + + + out.println("<button><a href=\"http://localhost:8080/s4a021-web-backend/Welcome\">Back to feed</a></button>"); + out.println("</body>"); + out.println("<footer>"); + out.println("Connected as " + login); + out.println("</footer>"); + out.println("</html>"); + + } + else { + res.sendRedirect("http://localhost:8080/s4a021-web-backend/index.html"); + } + } + +} diff --git a/WEB-INF/src/dao/UserDAO.java b/WEB-INF/src/dao/UserDAO.java index 0e6507117dc6cc2de9dedfe673e6214d3863c265..22d2f10916e5835ed48ca1538b1832e29281ab5b 100644 --- a/WEB-INF/src/dao/UserDAO.java +++ b/WEB-INF/src/dao/UserDAO.java @@ -155,10 +155,11 @@ public class UserDAO { } // Poster un message dans un thread - public void postMessage(User user, Thread thread, String message) throws SQLException { + public void postMessage(User user, MyThread thread, String message) throws SQLException { PreparedStatement ps = this.con.prepareStatement("INSERT INTO msg (userID_msg, threadID, msg) VALUES(?, ?, ?)"); try { ps.setInt(1, user.getId()); + // PROBLEME ICI ps.setInt(2, (int) thread.getId()); ps.setString(3, message); } @@ -181,7 +182,7 @@ public class UserDAO { } // Récupérer les thread auxquels un utilisateur est abonné - public List<MyThread> getThreadsByUser(User user) throws SQLException { + public List<MyThread> getThreadsFollowedByUser(User user) throws SQLException { List<MyThread> threads = new ArrayList<>(); PreparedStatement ps = this.con.prepareStatement("SELECT threadID_follow FROM follow WHERE userID_follow = ?"); try { @@ -199,6 +200,29 @@ public class UserDAO { return threads; } + public List<MyThread> getThreadsCreatedByUser(User user) throws SQLException { + List<MyThread> threads = new ArrayList<>(); + PreparedStatement ps = this.con.prepareStatement(""" + SELECT threadID, threadname FROM thread AS t + INNER JOIN userAccount AS u + ON t.userid_thread = u.userid + WHERE u.userid = ? + """); + try { + ps.setInt(1, user.getId()); + ResultSet rs = ps.executeQuery(); + while(rs.next()){ + int threadId = rs.getInt(1); + String threadname = rs.getString(2); + threads.add(new MyThread(threadId, threadname)); + } + } + catch (SQLException sqle) { + sqle.getStackTrace(); + } + return threads; + } + // Récupérer les messages de chaque thread à partir du plus récent public List<Message> getMostRecentMessages(User user) throws SQLException { List<Message> messages = new ArrayList<>(); @@ -217,10 +241,8 @@ public class UserDAO { try { System.out.println("user id : " + user.getId()); ps.setInt(1, user.getId()); - System.out.println("dans le try"); ResultSet rs = ps.executeQuery(); while(rs.next()){ - System.out.println("dans le while"); int msgID = rs.getInt(1); int sender = rs.getInt(2); int threadID = rs.getInt(3); @@ -230,10 +252,8 @@ public class UserDAO { } } catch (SQLException sqle) { - System.out.println("erreur"); sqle.getStackTrace(); } - System.out.println("test"); return messages; } } \ No newline at end of file