Skip to content
Snippets Groups Projects
menu.jsp 8.11 KiB
<%@ page import="java.util.List" %>
<%@ page import="dto.Fil" %>
<%@ page import="dto.Message" %>
<%@ page import="dto.Utilisateur" %>
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<%@ page import="java.util.Map" %>

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>LilleConnect</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="css/styleMenu.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.css">
    <link href="css/styleMenu2.css" rel="stylesheet">
    <meta http-equiv="refresh" content="10">
    <link rel="icon" href="images/LilleConnect.png" type="image/png">
</head>
<body>

<div class="container">
    <%
        List<Fil> fils = (List<Fil>) request.getAttribute("fils");
        Utilisateur utilisateur = (Utilisateur) session.getAttribute("utilisateur");
        boolean isUserInFil = fils != null && !fils.isEmpty();
    %>

    <!-- Bouton hamburger visible sur mobile -->
    <button class="navbar-toggler d-lg-none" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMenu" aria-controls="navbarMenu" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
    </button>

    <!-- Navbar mobile (visible quand on clique sur le hamburger) -->
    <div class="collapse navbar-collapse d-lg-none" id="navbarMenu">
        <div class="sidebar">
            <div class="d-flex align-items-center justify-content-between w-100">
                <a href="UserInfo" class="d-flex align-items-center gap-3 fs-4 text-decoration-none text-light">
                    <i class="bi bi-person"></i>
                    <span><%= utilisateur.getPrenom() + " " + utilisateur.getNom() %></span>
                </a>

                <a href="LogoutServlet" class="text-danger fs-3">
                    <i class="bi bi-box-arrow-right"></i>
                </a>
            </div>

            <div class="border-top border-3 border-primary my-4"></div>
            <h3>Vos fils de discussion</h3>
            <div class="separator"></div>

            <% if (isUserInFil) { %>
            <ul class="list-group">
                <% for (Fil fil : fils) { %>
                <li class="list-group-item d-flex justify-content-center align-items-center text-white border-0" style="background-color: #00072D;">
                    <a href="Menu?filId=<%= fil.getFid() %>" class="gap-2 px-5 py-2">
                        <%= fil.getTitre() %>
                    </a>
                    <a href="LeaveFil?filId=<%= fil.getFid() %>" class="text-danger fs-3">
                        <i class="bi bi-box-arrow-right"></i>
                    </a>
                </li>
                <% } %>
            </ul>
            <% } else { %>
            <p>Aucun fil de discussion trouvé.</p>
            <% } %>

            <div class="separator"></div>

            <div class="mt-3 text-center">
                <a href="creerFil.html" class="btn btn-primary d-flex align-items-center gap-2 px-4 py-2">
                <span class="d-inline-flex justify-content-center align-items-center border border-light rounded" style="width: 24px; height: 24px;">
                    <i class="bi bi-plus-lg"></i>
                </span>
                    Ajouter un fil
                </a>
            </div>
        </div>
    </div>

    <div class="main-content d-flex flex-column bg-image"
         style="min-height: 100vh; background-image: url('images/login-bg.png'); background-size: cover; background-position: center;">
        <%
            List<Message> messages = (List<Message>) request.getAttribute("message");
            if (messages != null && isUserInFil) {
        %>
        <div class="message-container w-100">
                <% for (Message mess : messages) {
                    boolean utilisateurConnecte = mess.getUid() == utilisateur.getId();
                %>
                <div>
                    <div class="message <% if(utilisateurConnecte) { %> blue ms-auto <% } %> w-75 mb-2 p-3 rounded shadow-sm">
                        <p class="username">
                            <i class="bi-person pe-2"></i>
                            <%= ((Map<Integer, String>) request.getAttribute("userNames")).get(mess.getUid()) %>
                        </p>

                        <%
                        byte[] messageData = mess.getMessageData();
                        String encodedImage = null;
                        boolean isImage = mess.isImage();

                        if (isImage) {
                            encodedImage = java.util.Base64.getEncoder().encodeToString(messageData);
                        }
                        %>
                        <% if (isImage) { %>
                        <img src="data:image/jpeg;base64,<%= encodedImage %>" alt="Message Image" class="contenu-img img-fluid" />
                        <% } else { %>
                            <p class="contenu"><%= new String(messageData, "UTF-8") %></p>
                        <% } %>
                        <div class="d-flex align-items-center justify-content-end">
                            <form action="ControleurLike" method="POST">
                                <input type="hidden" name="messId" value="<%= mess.getMid() %>">
                                <input type="hidden" name="fid" value="<%= request.getAttribute("filId") %>">
                                <button type="submit" class="btn text-dark d-flex align-items-center gap-1">
                                    <i class="bi bi-hand-thumbs-up"></i><%= new dao.LikeDAO().getNbLike(mess.getMid()) %>
                                </button>
                            </form>
                        </div>
                    </div>
                </div>
                <% } %>
        </div>
<%
Boolean isAdmin = (Boolean) request.getAttribute("isAdmin");
%>
        <form action="EnvoyerMessage" method="POST" class="w-100 mt-auto d-flex flex-column" enctype="multipart/form-data">
            <input type="hidden" name="fid" value="<%= request.getAttribute("filId") %>">
            <input type="hidden" name="uid" value="<%= utilisateur.getId() %>">
            <div class="input-group p-1 rounded border d-flex align-items-center bg-white">
<%
if(isAdmin){
%>
                <a href="AddUser?filId=<%=request.getAttribute("filId")%>" class="btn btn-light text-dark fs3">
                    <i class="bi bi-person-plus fs-4"></i>
                </a>
                <span class="px-2 text-muted bg-white">|</span>
<% } %>
        <label class="btn btn-light text-dark" for="image-upload">
            <i class="bi bi-image fs-4"></i>
        </label>
        <input type="file" id="image-upload" name="image" class="d-none" accept="image/*">

                <span class="px-2 text-muted bg-white">|</span>
                <input type="text" class="form-control border-0" name="message" placeholder="Tapez votre message ici ..." aria-label="Message">
                <span class="px-2 text-muted bg-white">|</span>
                <button class="btn btn-light text-dark" type="submit">
                    <i class="bi bi-send fs-4"></i>
                </button>
            </div>
        </form>
        <% } else { %>
        <div class="d-flex">
            <div class="text-center p-5 rounded-3 shadow-lg text-white" style="background-color: #291968;">
                <h1 class="display-4 mb-4">Bienvenue sur LilleConnect</h1>
                <p class="lead">Veuillez sélectionner un fil de discussion.</p>
            </div>
        </div>
        <% } %>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
        crossorigin="anonymous"></script>
<script>
    window.onload = () => {
        const container = document.querySelector('.message-container');
        if (container) {
            container.scrollTop = container.scrollHeight;
        }
    };
</script>
</body>
</html>