From 3d1ba2d37b1b2aa5a9ecae7b47a45861f43256f5 Mon Sep 17 00:00:00 2001
From: Adrien <adrien.fryson@outlook.com>
Date: Tue, 18 Feb 2025 20:50:06 +0100
Subject: [PATCH] changes

---
 sae/WEB-INF/src/controleur/Fil.java       | 10 ++++-----
 sae/WEB-INF/src/modele/AbonnementDao.java | 20 -----------------
 sae/WEB-INF/vue/accueil.jsp               | 26 ++++++++++++++++++++---
 sae/WEB-INF/vue/listerFil.jsp             | 21 ++++++++++++++++--
 4 files changed, 47 insertions(+), 30 deletions(-)

diff --git a/sae/WEB-INF/src/controleur/Fil.java b/sae/WEB-INF/src/controleur/Fil.java
index bb63417..f9a529d 100644
--- a/sae/WEB-INF/src/controleur/Fil.java
+++ b/sae/WEB-INF/src/controleur/Fil.java
@@ -17,11 +17,11 @@ public class Fil extends HttpServlet {
         }
         int id = Integer.parseInt(req.getParameter("id"));
         String email = (String) req.getSession().getAttribute("email");
-        // AbonnementDao abonnementDao = new AbonnementDao();
-        // if (!abonnementDao.isAbonne(email, id)) {
-        //     res.sendRedirect(req.getContextPath() + "/listerFil");
-        //     return;
-        // }
+        AbonnementDao abonnementDao = new AbonnementDao();
+        if (!abonnementDao.isAbonne(email, id)) {
+            res.sendRedirect(req.getContextPath() + "/listerFil");
+            return;
+        }
         req.setAttribute("id", id);
         req.getRequestDispatcher("/WEB-INF/vue/fil.jsp").forward(req, res);
     }
diff --git a/sae/WEB-INF/src/modele/AbonnementDao.java b/sae/WEB-INF/src/modele/AbonnementDao.java
index 151db56..5653988 100644
--- a/sae/WEB-INF/src/modele/AbonnementDao.java
+++ b/sae/WEB-INF/src/modele/AbonnementDao.java
@@ -7,26 +7,6 @@ import java.util.List;
 import java.util.ArrayList;
 
 public class AbonnementDao {
-    
-    public Abonnement findAbonnement(String utilisateurEmail, int idFil) {
-        Abonnement abonnement = new Abonnement();
-        try(Connection con = DS.instance.getConnection()) {
-            PreparedStatement ps = con.prepareStatement("SELECT * FROM abonnement WHERE utilisateuremail = ? AND filid = ?");
-            ps.setString(1, utilisateurEmail);
-            ps.setInt(2, idFil);
-            ResultSet rs = ps.executeQuery();
-            if (rs.next()) {
-                abonnement.setUtilisateurEmail(rs.getString("utilisateuremail"));
-                abonnement.setIdFil(rs.getInt("filid"));
-                abonnement.setDateAbonnement(rs.getDate("dateabonnement").toLocalDate());
-            } else {
-                System.out.println("Abonnement inexistant");
-            }
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-        }
-        return abonnement;
-    }
 
     public List<Abonnement> findAll() {
         List<Abonnement> abonnements = new ArrayList<>();
diff --git a/sae/WEB-INF/vue/accueil.jsp b/sae/WEB-INF/vue/accueil.jsp
index b04dad2..0cfb583 100644
--- a/sae/WEB-INF/vue/accueil.jsp
+++ b/sae/WEB-INF/vue/accueil.jsp
@@ -1,5 +1,10 @@
 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 <%@ page import="modele.UtilisateurDao" %>
+<%@ page import="modele.AbonnementDao" %>
+<%@ page import="modele.FilDeDiscussion" %>
+<%@ page import="modele.FilDeDiscussionDAO" %>
+<%@ page import="modele.Abonnement" %>
+<%@ page import="java.util.List" %>
 
 <!DOCTYPE html>
 <html lang="fr">
@@ -43,13 +48,28 @@
     </nav>
     <% 
         UtilisateurDao udao = new UtilisateurDao();
-        String username = udao.findUtilisateur((String) session.getAttribute("email")).getNom();
+        String email = (String) session.getAttribute("email");
+        String username = udao.findUtilisateur(email).getNom();
+        
+        AbonnementDao adao = new AbonnementDao();
+        List<Abonnement> abonnements = adao.findAbonnements(email);
+        FilDeDiscussionDAO fdao = new FilDeDiscussionDAO();
     %>
     <div class="welcome-container text-center">
         <h2>Bienvenue sur CampusTalk</h2>
         <p>Bonjour, <%= username  %> !</p>
-        <p>Vous êtes connecté en tant que <%= session.getAttribute("email") %></p>
-        <a href="<%= request.getContextPath() %>/listerFil" class="btn btn-primary mt-4">Voir les fils de discussion</a>
+        <p>Vous êtes connecté en tant que <%= email %></p>
+        <a href="<%= request.getContextPath() %>/listerFil" class="btn btn-primary mt-4">Voir les autres fils de discussion</a>
+    </div>
+    <div class="welcome-container mt-4">
+        <h3>Vos abonnements</h3>
+        <ul class="list-group">
+            <% for (Abonnement abo : abonnements) { %>
+                <li class="list-group-item">
+                    <a href="<%= request.getContextPath() %>/fil?id=<%= abo.getIdFil() %>"><%= fdao.findById(abo.getIdFil()).getNom() %></a>
+                </li>
+            <% } %>
+        </ul>
     </div>
 
     <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
diff --git a/sae/WEB-INF/vue/listerFil.jsp b/sae/WEB-INF/vue/listerFil.jsp
index 9dab6a0..c90ab35 100644
--- a/sae/WEB-INF/vue/listerFil.jsp
+++ b/sae/WEB-INF/vue/listerFil.jsp
@@ -1,6 +1,11 @@
 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 <%@ page import="modele.FilDeDiscussion" %>
 <%@ page import="modele.FilDeDiscussionDAO" %>
+<%@ page import="modele.AbonnementDao" %>
+<%@ page import="modele.Abonnement" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Set" %>
+<%@ page import="java.util.HashSet" %>
 
 <!DOCTYPE html>
 <html lang="fr">
@@ -63,17 +68,29 @@
         <div class="thread-container">
             <h2 class="text-center">Fils de Discussion</h2>
             <%  
+                String email = (String) session.getAttribute("email");
+                AbonnementDao adao = new AbonnementDao();
+                List<Abonnement> abonnements = adao.findAbonnements(email);
+                Set<Integer> abonnementsIds = new HashSet<>();
+                for (Abonnement abonnement : abonnements) {
+                    abonnementsIds.add(abonnement.getIdFil());
+                }
+
                 FilDeDiscussionDAO fddao = new FilDeDiscussionDAO();
                 for (FilDeDiscussion f : fddao.findAll()) {
+                    if (!abonnementsIds.contains(f.getId())) {
             %>
                 <div class="thread-item">
                     <h4>
                         <a href="<%= request.getContextPath() %>/fil?id=<%= f.getId() %>"><%= f.getNom() %></a>
-                        <!-- <a href="<%= request.getContextPath() %>/suivreFil?id=<%= f.getId() %>" class="btn btn-primary btn-sm float-right">Suivre</a> -->
+                        <a href="<%= request.getContextPath() %>/suivreFil?id=<%= f.getId() %>" class="btn btn-primary btn-sm float-right">Suivre</a>
                     </h4>
                     <!-- potentiellement mettre une description -->
                 </div>
-            <% } %>
+            <% 
+                    }
+                } 
+            %>
         </div>
     </div>
 
-- 
GitLab