diff --git a/WEB-INF/src/controleurs/Feed.java b/WEB-INF/src/controleurs/Feed.java index ca7137755c53d8cf2aea9fc4cb34e74ca64826d7..81aaa522b1c7b926a09149d32695902a55d98add 100644 --- a/WEB-INF/src/controleurs/Feed.java +++ b/WEB-INF/src/controleurs/Feed.java @@ -40,6 +40,8 @@ public class Feed extends HttpServlet { out.println("<html><body><meta charset=\"utf-8\">"); out.println("<link rel=\"stylesheet\" href=\"css/feed.css\">"); out.println("<title>Welcome</title>"); + + out.println("<h1>Welcome " + login + "</h1>"); out.println("<h1>Welcome " + login + "</h1>"); @@ -51,6 +53,8 @@ public class Feed extends HttpServlet { out.println("</ul></nav>"); + + if (!messages.isEmpty()) { for (Message message : messages) { MyThread msgThread = null; diff --git a/WEB-INF/src/controleurs/Following.java b/WEB-INF/src/controleurs/Following.java new file mode 100644 index 0000000000000000000000000000000000000000..a93bb8886d2a78af94875b62f04d41d528e7173f --- /dev/null +++ b/WEB-INF/src/controleurs/Following.java @@ -0,0 +1,88 @@ +package controleurs; + +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.SQLException; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +import dao.UserDAO; +import dto.MyThread; +import dto.User; + +@WebServlet("/Followed") +public class Following extends HttpServlet { + public void service(HttpServletRequest req, HttpServletResponse res) + throws IOException { + if (req.getSession().getAttribute("user") != null) { + PrintWriter out = res.getWriter(); + UserDAO userDAO = new UserDAO(); + + String login = (String) req.getSession().getAttribute("login"); + User user = userDAO.getUserByLogs(login, req.getSession().getAttribute("password").toString()); + if (!userDAO.isDatabased(user)) res.sendRedirect("http://localhost:8080/s4a021-web-backend/index.html"); + + List<MyThread> threadsFollowedByUser = null; + try { + System.out.println("dans le try"); + threadsFollowedByUser = userDAO.getThreadsFollowedByUser(user); + } + catch (SQLException sqle) { + sqle.getStackTrace(); + } + + System.out.println(threadsFollowedByUser.size()); + + out.println("<html><body><meta charset=\"utf-8\">"); + out.println("<title>Followed</title>"); + + 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>Threads followed</h1>"); + + if (!threadsFollowedByUser.isEmpty()) { + System.out.println("dans les threads suivis"); + for (MyThread t : threadsFollowedByUser) { + LocalDate followDate = null; + try { + followDate = userDAO.getFollowDateOfThread(user, t); + } + catch (SQLException sqle) { + sqle.getStackTrace(); + } + + out.println("<div class=\"thread\">"); + out.println("<h3 class=\"threadname\">Thread name: " + t.getThreadName() + "</h3>"); + out.println("<h4 class=\"followDate\">Following since: " + followDate + "</h4>"); + out.println("</div>"); + } + } + else { + out.println("<h3>You are not following any thread yet.</h3>"); + out.println("<button><a href=\"\">Discover new threads</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/ThreadDAO.java b/WEB-INF/src/dao/ThreadDAO.java index d8133b6204e814569a17ee0d8434fab90d4579a5..22140beae20180a423aedb2f5bde4c4ecea6f336 100644 --- a/WEB-INF/src/dao/ThreadDAO.java +++ b/WEB-INF/src/dao/ThreadDAO.java @@ -5,6 +5,7 @@ import dto.User; import dto.MyThread; import java.sql.*; +import java.time.LocalDate; import java.util.ArrayList; import java.util.List; diff --git a/WEB-INF/src/dao/UserDAO.java b/WEB-INF/src/dao/UserDAO.java index d976a069461d0f66624c882291be2730b3ad4175..32b553bad47270b3d383523ef6412458fe7b8001 100644 --- a/WEB-INF/src/dao/UserDAO.java +++ b/WEB-INF/src/dao/UserDAO.java @@ -184,15 +184,21 @@ public class UserDAO { // Récupérer les thread auxquels un utilisateur est abonné public List<MyThread> getThreadsFollowedByUser(User user) throws SQLException { List<MyThread> threads = new ArrayList<>(); + ThreadDAO threadDAO = new ThreadDAO(); PreparedStatement ps = this.con.prepareStatement("SELECT threadID_follow FROM follow WHERE userID_follow = ?"); try { ps.setInt(1, user.getId()); ResultSet rs = ps.executeQuery(); while(rs.next()){ + System.out.println("dans le while"); int threadId = rs.getInt(1); - String threadname = rs.getString(2); + System.out.println("id : " + threadId); + String threadname = threadDAO.getThreadById(threadId).getThreadName(); + System.out.println("name : " + threadname); threads.add(new MyThread(threadId, threadname)); + System.out.println("thread ajouté aux suivis"); } + System.out.println("après le while"); } catch (SQLException sqle) { sqle.getStackTrace(); @@ -240,7 +246,6 @@ public class UserDAO { ORDER BY m.posted_at DESC; """); try { - System.out.println("user id : " + user.getId()); ps.setInt(1, user.getId()); ResultSet rs = ps.executeQuery(); while(rs.next()){ @@ -257,4 +262,33 @@ public class UserDAO { } return messages; } + + public LocalDate getFollowDateOfThread(User user, MyThread thread) + throws SQLException { + LocalDate followDate = null; + PreparedStatement ps = this.con.prepareStatement(""" + SELECT followDate FROM follow + WHERE userID_follow = ? + AND threadID_follow = ? + """); + try { + ps.setInt(1, user.getId()); + System.out.println(user.getId()); + ps.setInt(2, thread.getId()); + System.out.println(thread.getId()); + System.out.println(ps); + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + System.out.println("dans le while"); + followDate = rs.getDate(1).toLocalDate(); + System.out.println(followDate); + } + + } + catch (SQLException sqle) { + sqle.getStackTrace(); + } + + return followDate; + } } \ No newline at end of file