diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c55f41bf7357966b0569b5fc44f8d45ada7d92de Binary files /dev/null and b/.DS_Store differ diff --git a/sae/.DS_Store b/sae/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..80e05f87d5ce7a3369fdede7be02b4ce2fd0508c Binary files /dev/null and b/sae/.DS_Store differ diff --git a/sae/WEB-INF/src/controleur/GetFils.java b/sae/WEB-INF/src/controleur/GetFils.java new file mode 100644 index 0000000000000000000000000000000000000000..87ad95b57b99c688d4f050d6871de85ab4545d65 --- /dev/null +++ b/sae/WEB-INF/src/controleur/GetFils.java @@ -0,0 +1,60 @@ +package controleur; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; // Importation du module + +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import modele.Abonnement; +import modele.AbonnementDao; +import modele.FilDeDiscussion; +import modele.FilDeDiscussionDAO; +import modele.Message; +import modele.MessageDao; + +@WebServlet("/getFils") +public class GetFils extends HttpServlet { + public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { + if (req.getSession(false) == null || req.getSession().getAttribute("email") == null) { + res.sendRedirect(req.getContextPath() + "/login"); + return; + } + + String email = (String) req.getSession().getAttribute("email"); + AbonnementDao abonnementDao = new AbonnementDao(); + FilDeDiscussionDAO filDao = new FilDeDiscussionDAO(); + MessageDao messageDao = new MessageDao(); + + List<Abonnement> abonnements = abonnementDao.findAbonnements(email); + List<FilDeDiscussion> fils = new ArrayList<>(); + Map<Integer, List<Message>> messagesMap = new HashMap<>(); + + for (Abonnement abonnement : abonnements) { + FilDeDiscussion fil = filDao.findById(abonnement.getIdFil()); + fils.add(fil); + List<Message> messages = messageDao.findByFil(fil.getId()); + messagesMap.put(fil.getId(), messages); + } + + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); // Enregistrement du module + objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + + Map<String, Object> jsonResponse = new HashMap<>(); + jsonResponse.put("fils", fils); + jsonResponse.put("messages", messagesMap); + + res.setContentType("application/json"); + res.getWriter().write(objectMapper.writeValueAsString(jsonResponse)); + } +} \ No newline at end of file diff --git a/sae/WEB-INF/src/modele/Message.java b/sae/WEB-INF/src/modele/Message.java index 5e7b1bdb8e54550c4d5f9293b97b08504b244016..371ef61b042f7aad4e024a6e45d0e183555304f9 100644 --- a/sae/WEB-INF/src/modele/Message.java +++ b/sae/WEB-INF/src/modele/Message.java @@ -1,13 +1,23 @@ package modele; +import java.sql.Connection; +import java.sql.PreparedStatement; import java.time.LocalDateTime; +import com.fasterxml.jackson.annotation.JsonFormat; + public class Message { private int id; private String contenu; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss") private LocalDateTime datePublication; private int filId; private String auteurEmail; + private String imageUrl; + private int like; + private int unlike; + + // Constructeurs, getters et setters public Message() { } @@ -64,4 +74,37 @@ public class Message { public String toString() { return "Message{" + "id=" + id + ", contenu=" + contenu + ", datePublication=" + datePublication + ", filId=" + filId + ", auteurEmail=" + auteurEmail + '}'; } + + public String getImageUrl() { + return imageUrl; + } + + public int getLike() { + return like; + } + + public void setLike(int like) { + this.like = like; + } + + public int getUnlike() { + return unlike; + } + + public void setUnlike(int unlike) { + this.unlike = unlike; + } + + // filepath: /Users/othemanek./Desktop/tomcat/webapps/sae/WEB-INF/src/modele/MessageDao.java + public void create(Message message) { + try (Connection con = DS.instance.getConnection()) { + PreparedStatement ps = con.prepareStatement("INSERT INTO message (contenu, filid, auteuremail, imageUrl) VALUES (?, ?, ?)"); + ps.setString(1, message.getContenu()); + ps.setInt(2, message.getfilId()); + ps.setString(3, message.getAuteurEmail()); + ps.executeUpdate(); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } }