Skip to content
Snippets Groups Projects
Commit 57f34c13 authored by Charlie Darques's avatar Charlie Darques
Browse files

À TESTER : début d'implémentation pour liker ou unliker un message

parent 7ce174b9
No related branches found
No related tags found
No related merge requests found
...@@ -13,84 +13,103 @@ import jakarta.servlet.http.HttpServletResponse; ...@@ -13,84 +13,103 @@ import jakarta.servlet.http.HttpServletResponse;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.IOException; import java.io.IOException;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@WebServlet("/Welcome") @WebServlet("/Welcome")
public class Feed extends HttpServlet { public class Feed extends HttpServlet {
UserDAO userDao = new UserDAO();
ThreadDAO threadDao = new ThreadDAO();
User user;
public void service(HttpServletRequest req, HttpServletResponse res) public void service(HttpServletRequest req, HttpServletResponse res)
throws IOException { throws IOException {
if (req.getSession().getAttribute("user") != null) { if (req.getSession().getAttribute("user") != null) {
UserDAO userDao = new UserDAO();
ThreadDAO threadDao = new ThreadDAO();
PrintWriter out = res.getWriter(); PrintWriter out = res.getWriter();
String login = (String) req.getSession().getAttribute("login"); String login = (String) req.getSession().getAttribute("login");
System.out.println(login);
User user = userDao.getUserByLogs(login, req.getSession().getAttribute("password").toString()); user = userDao.getUserByLogs(login, req.getSession().getAttribute("password").toString());
if (user != null) { List<Integer> liked_messages = getLikedMessages(req);
List<Message> messages = null;
try { List<Message> messages = null;
messages = userDao.getMostRecentMessages(user); try {
} catch (SQLException e) { messages = userDao.getMostRecentMessages(user);
throw new RuntimeException(e); } catch (SQLException e) {
} throw new RuntimeException(e);
}
out.println("<html><body><meta charset=\"utf-8\">");
out.println("<link rel=\"stylesheet\" href=\"css/feed.css\">");
out.println("<title>Welcome</title>");
out.println("<html><body><meta charset=\"utf-8\">"); out.println("<h1>Welcome to CampusTalk, " + login + " !</h1>");
out.println("<link rel=\"stylesheet\" href=\"css/feed.css\">");
out.println("<title>Welcome</title>"); out.println(PageGeneration.generateNavMenu());
out.println("<h1>Welcome to CampusTalk, " + login + " !</h1>"); if (!messages.isEmpty()) {
for (Message message : messages) {
out.println(PageGeneration.generateNavMenu()); MyThread msgThread;
try {
if (!messages.isEmpty()) { msgThread = threadDao.getThreadById(message.getThreadId());
for (Message message : messages) { } catch (SQLException e) {
MyThread msgThread = null; throw new RuntimeException(e);
try {
msgThread = threadDao.getThreadById(message.getThreadId());
} catch (SQLException e) {
throw new RuntimeException(e);
}
out.println("<div class=\"message\">");
out.println("<h3 class=\"msgThread\">" + msgThread.getThreadName() + "</h3>");
out.println("<p class=\"msgContent\">" + message.getContent() + "</p>");
out.println("<form action=\"http://localhost:8080/s4a021-web-backend/PostMessage\" method=\"post\">");
out.println("<textarea name=\"message\" rows=\"2\" cols=\"30\" 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>");
// like/unlike : formulaire
// donc appel d'une servlet qui n'exécute que du code pour appeler la méthode de réaction au message
// et redirection sur cette page qui affiche pour chaque message s'il est liké ou pas (voir comment faire pour l'affichage)
out.println("<form><button class=\"react\" type=\"submit\" value=\"Like\">Like</button></form>");
out.println("</div>");
} }
} out.println("<div class=\"message\">");
else { out.println("<h3 class=\"msgThread\">" + msgThread.getThreadName() + "</h3>");
out.println("<p class=\"information\">You are not following any thread yet.</p>"); out.println("<p class=\"msgContent\">" + message.getContent() + "</p>");
}
out.println("<div class=\"discover\">"); out.println("<form action=\"http://localhost:8080/s4a021-web-backend/PostMessage\" method=\"post\">");
out.println("<a href=\"\">Discover new threads</a>"); out.println("<textarea name=\"message\" rows=\"2\" cols=\"30\" placeholder=\"Post a message in this thread\"></textarea>");
out.println("<a href=\"http://localhost:8080/s4a021-web-backend/NewThread\">Create a new thread</a>"); out.println("<input name=\"threadid\" type=\"hidden\" value=\"" + msgThread.getId() + "\">");
out.println("</div>"); out.println("<button type=\"submit\">Post</button>");
out.println("</form>");
out.println("</body>");
out.println("<footer>");
out.println("Connected as " + login);
out.println("</footer>");
out.println("</html>");
out.println("<form action=\"http://localhost:8080/s4a021-web-backend/LikeMessage\" method=\"post\">");
if (liked_messages.contains(message.getMsgId())) {
out.println("<button class=\"liked\" type=\"submit\" value=\"Liked\">Liked</button></form>");
} else {
out.println("<button class=\"unliked\" type\"submit\" value=\"Unliked\">Unliked</button></form>");
}
out.println("</div>");
}
}
else{
out.println("<p class=\"information\">You are not following any thread yet.</p>");
} }
out.println("<div class=\"discover\">");
out.println("<a href=\"\">Discover new threads</a>");
out.println("<a href=\"http://localhost:8080/s4a021-web-backend/NewThread\">Create a new thread</a>");
out.println("</div>");
} else { 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"); res.sendRedirect("http://localhost:8080/s4a021-web-backend/index.html");
} }
}
public List<Integer> getLikedMessages(HttpServletRequest req) {
List<Integer> liked_messages = new ArrayList<>();
if (req.getSession().getAttribute("liked_messages") != null) {
liked_messages = (List<Integer>) req.getSession().getAttribute("liked_messages");
}
else {
try {
liked_messages = userDao.getLikedMessagesFromUser(user);
req.getSession().setAttribute("liked_messages", liked_messages);
} catch (SQLException e) {
e.getStackTrace();
}
}
return liked_messages;
} }
} }
...@@ -8,7 +8,6 @@ import jakarta.servlet.http.HttpServletRequest; ...@@ -8,7 +8,6 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException; import java.sql.SQLException;
@WebServlet("/FollowThread") @WebServlet("/FollowThread")
...@@ -20,8 +19,6 @@ public class FollowThread { ...@@ -20,8 +19,6 @@ public class FollowThread {
UserDAO userDao = new UserDAO(); UserDAO userDao = new UserDAO();
ThreadDAO threadDao = new ThreadDAO(); ThreadDAO threadDao = new ThreadDAO();
PrintWriter out = res.getWriter();
String login = (String) req.getSession().getAttribute("login");
try { try {
userDao.followThread(user, threadDao.getThreadById((Integer.parseInt(req.getParameter("threadid"))))); userDao.followThread(user, threadDao.getThreadById((Integer.parseInt(req.getParameter("threadid")))));
......
package controleurs;
public class LikeMessage {
// à remplir
}
...@@ -295,4 +295,23 @@ public class UserDAO { ...@@ -295,4 +295,23 @@ public class UserDAO {
return followDate; return followDate;
} }
public List<Integer> getLikedMessagesFromUser(User user) throws SQLException{
List<Integer> messages = new ArrayList<>();
PreparedStatement ps = this.con.prepareStatement("""
SELECT msgID_reactions FROM reactions
WHERE userID_reactions = ?
""");
try {
ps.setInt(1, user.getId());
ResultSet rs = ps.executeQuery();
while(rs.next()){
messages.add(rs.getInt(1));
}
}
catch (SQLException sqle) {
sqle.getStackTrace();
}
return messages;
}
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment