Skip to content
Snippets Groups Projects
Commit d3490d54 authored by Adrien's avatar Adrien
Browse files

accueil, vue lister les fils de discussion et affichage d'un fil de discussion

parent 4d4ce506
No related branches found
No related tags found
No related merge requests found
package controleur;
import java.io.IOException;
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 jakarta.servlet.http.HttpSession;
@WebServlet("/accueil")
public class Accueil extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(false);
if (session != null && session.getAttribute("email") != null) {
request.getRequestDispatcher("/WEB-INF/vue/accueil.jsp").forward(request, response);
} else {
System.out.println("Accès refusé");
response.sendRedirect(request.getContextPath() + "/login");
}
}
}
\ No newline at end of file
package controleur;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.ServletException;
import java.io.IOException;
@WebServlet("/fil")
public class Fil extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
// si la personne n'est pas abonnée à ce fil, on la redirige vers la page de liste des fils
// TODO
int id = Integer.parseInt(req.getParameter("id"));
req.setAttribute("id", id);
req.getRequestDispatcher("/WEB-INF/vue/fil.jsp").forward(req, res);
}
}
package controleur;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.ServletException;
import java.io.IOException;
@WebServlet("/listerFil")
public class ListerFil 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;
}
req.getRequestDispatcher("/WEB-INF/vue/listerFil.jsp").forward(req, res);
}
}
......@@ -4,6 +4,7 @@ import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import modele.UtilisateurDao;
import jakarta.servlet.ServletException;
import java.io.IOException;
......
package controleur;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpSession;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.ServletException;
import java.io.IOException;
@WebServlet("/logout")
public class Logout extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
HttpSession session = req.getSession(false);
if (session != null) {
session.invalidate();
}
res.sendRedirect(req.getContextPath() + "/login");
}
}
......@@ -49,7 +49,7 @@ public class MessageDao {
return messages;
}
public List<Message> findMessages(int idFil) {
public List<Message> findByFil(int idFil) {
List<Message> messages = new ArrayList<>();
try(Connection con = DS.instance.getConnection()) {
PreparedStatement ps = con.prepareStatement("SELECT * FROM message WHERE filId = ?");
......@@ -69,4 +69,21 @@ public class MessageDao {
}
return messages;
}
public String findUserName(String email) {
String userName = "";
try(Connection con = DS.instance.getConnection()) {
PreparedStatement ps = con.prepareStatement("SELECT nom FROM utilisateur WHERE email = ?");
ps.setString(1, email);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
userName = rs.getString("nom");
} else {
System.out.println("Utilisateur inexistant");
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
return userName;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CampusTalk - Accueil</title>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
<style>
body {
background-color: #f8f9fa;
}
.welcome-container {
max-width: 800px;
margin: 50px auto;
padding: 20px;
background-color: #ffffff;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.welcome-container h2 {
margin-bottom: 20px;
font-weight: bold;
}
</style>
</head>
<body>
<div class="welcome-container">
<h2 class="text-center">Bienvenue sur CampusTalk</h2>
<p class="text-center">Bonjour, <%= session.getAttribute("email") %> !</p>
<p class="text-center">Vous êtes connecté en tant que <%= session.getAttribute("email") %></p>
<div class="text-center mt-4">
<a href="<%= request.getContextPath() %>/logout" class="btn btn-danger">Se déconnecter</a>
</div>
</div>
<button type="button" class="btn btn-primary mt-4 mx-auto d-block">
<a href="<%= request.getContextPath() %>/listerFil" style="color: white; text-decoration: none;">Voir les fils de discussion</a>
</button>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
\ No newline at end of file
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="modele.FilDeDiscussion" %>
<%@ page import="modele.FilDeDiscussionDAO" %>
<%@ page import="modele.Message" %>
<%@ page import="modele.MessageDao" %>
<%@ page import="java.util.List" %>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CampusTalk - Fil de Discussion</title>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
<style>
body {
background-color: #f8f9fa;
}
.thread-container {
max-width: 800px;
margin: 50px auto;
padding: 20px;
background-color: #ffffff;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.thread-container h2 {
margin-bottom: 20px;
font-weight: bold;
}
.message-item {
display: flex;
align-items: flex-start;
padding: 10px;
border-bottom: 1px solid #ddd;
}
.message-item:last-child {
border-bottom: none;
}
.avatar {
width: 50px;
height: 50px;
border-radius: 50%;
margin-right: 15px;
}
.message-content {
background-color: #e9ecef;
padding: 10px;
border-radius: 10px;
max-width: 600px;
}
.message-content h4 {
margin: 0;
font-size: 1.1em;
font-weight: bold;
}
.message-content p {
margin: 5px 0;
}
.message-date {
font-size: 0.8em;
color: #6c757d;
}
</style>
</head>
<body>
<div class="text-center mt-4">
<a href="<%= request.getContextPath() %>/listerFil" class="btn btn-primary">Retour</a>
</div>
<%
int id = Integer.parseInt(request.getParameter("id"));
FilDeDiscussionDAO fddao = new FilDeDiscussionDAO();
FilDeDiscussion fil = fddao.findById(id);
MessageDao mdao = new MessageDao();
List<Message> messages = mdao.findByFil(id);
%>
<div class="thread-container">
<h2 class="text-center"><%= fil.getNom() %></h2>
<% for (Message m : messages) { %>
<div class="message-item">
<!-- potentiellement une pdp -->
<div class="message-content">
<h4><%= mdao.findUserName(m.getAuteurEmail()) %></h4>
<p class="message-date"><%= m.getDatePublication() %></p>
<p><%= m.getContenu() %></p>
</div>
</div>
<% } %>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
\ No newline at end of file
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="modele.FilDeDiscussion" %>
<%@ page import="modele.FilDeDiscussionDAO" %>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CampusTalk - Fils de Discussion</title>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
<style>
body {
background-color: #f8f9fa;
}
.thread-container {
max-width: 800px;
margin: 50px auto;
padding: 20px;
background-color: #ffffff;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.thread-container h2 {
margin-bottom: 20px;
font-weight: bold;
}
.thread-item {
padding: 10px;
border-bottom: 1px solid #ddd;
}
.thread-item:last-child {
border-bottom: none;
}
</style>
</head>
<body>
<div class="thread-container">
<h2 class="text-center">Fils de Discussion</h2>
<%
FilDeDiscussionDAO fddao = new FilDeDiscussionDAO();
for (FilDeDiscussion f : fddao.findAll()) {
%>
<div class="thread-item">
<h4><a href="<%= request.getContextPath() %>/fil?id=<%= f.getId() %>"><%= f.getNom() %></a></h4>
<!-- potentiellement mettre une description -->
</div>
<% } %>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
\ 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