app.get('/dashboardcontact', async (req, res) => {
if (req.session.role !== 'admin') {
return res.redirect('/');
}
try {
const page = parseInt(req.query.page) || 1;
const perPage = parseInt(req.query.perPage) || 50;
const search = req.query.search || '';
const pool = await sql.connect(bd);
// Get the total count of contacts
const countResult = await pool.request()
.query(`SELECT COUNT(*) AS totalCount FROM contact`);
const totalCount = countResult.recordset[0].totalCount;
const offset = (page - 1) * perPage;
let searchCondition = '';
if (search !== '') {
searchCondition = `
WHERE
c.nom LIKE '${search}%' OR
c.prenom LIKE '${search}%' OR
c.message LIKE '${search}%'
`;
}
// Fetch contacts with associated usernames
const result = await pool.request()
.query(`
SELECT c.nom, c.prenom, c.message, u.username
FROM contact c
JOIN utilisateur u ON c.utilisateur_id = u.id
${searchCondition}
ORDER BY c.id
OFFSET ${offset} ROWS FETCH NEXT ${perPage} ROWS ONLY
`);
if (result.recordset.length === 0) {
res.render('dashboardcontact', {
contacts: result.recordset,
page,
perPage,
totalCount,
message: 'Aucun résultat trouvé pour la recherche : ' + search
});
} else {
res.render('dashboardcontact', {
contacts: result.recordset,
page,
perPage,
totalCount
});
}
} catch (err) {
console.error("Erreur de récupération des données:", err.message);
res.status(500).send('Erreur interne du serveur');
}
});
| Nom |
Prénom |
Message |
Username |
<% if (contacts.length > 0) { %>
<% contacts.forEach(contact => { %>
| <%= contact.nom %> |
<%= contact.prenom %> |
<%= contact.message %> |
<%= contact.username %> |
<% }); %>
<% } else { %>
| Aucun contact trouvé |
<% } %>