module.exports = function registerAdminPagesRoutes(app, deps) { const pool = deps.pool; const common = deps.common; const pages = deps.pages; const buildDashboardState = deps.buildDashboardState; app.get('/admin', async function (req, res, next) { try { const data = await buildDashboardState(pool); res.send(pages.renderDashboardPage(data, req.query.message ? String(req.query.message) : '', req.currentUser)); } catch (error) { next(error); } }); app.get('/admin/clients', async function (req, res, next) { try { const data = await buildDashboardState(pool); res.send(pages.renderConnectedClientsPage(data, req.query.message ? String(req.query.message) : '', req.currentUser)); } catch (error) { next(error); } }); app.get('/admin/screens', async function (req, res, next) { try { const data = await buildDashboardState(pool); if (req.query.edit) { const screen = await common.fetchScreenById(pool, Number(req.query.edit)); if (!screen) { return res.status(404).send('Screen not found'); } const editData = await common.fetchScreenEditData(pool); return res.send(pages.renderScreenEditPage(screen, editData, req.query.message ? String(req.query.message) : '', req.currentUser)); } res.send(pages.renderScreensPage(data, req.query.message ? String(req.query.message) : '', req.currentUser)); } catch (error) { next(error); } }); app.get('/admin/screens/:id/edit', async function (req, res, next) { try { const screen = await common.fetchScreenById(pool, Number(req.params.id)); if (!screen) { return res.status(404).send('Screen not found'); } const editData = await common.fetchScreenEditData(pool); return res.send(pages.renderScreenEditPage(screen, editData, req.query.message ? String(req.query.message) : '', req.currentUser)); } catch (error) { next(error); } }); app.get('/admin/playlists', async function (req, res, next) { try { const data = await common.fetchAdminData(pool); if (req.query.edit) { const playlist = await common.fetchPlaylistById(pool, Number(req.query.edit)); if (!playlist) { return res.status(404).send('Playlist not found'); } return res.send(pages.renderPlaylistEditPage(playlist, data, req.query.message ? String(req.query.message) : '', req.currentUser)); } res.send(pages.renderPlaylistsPage(data, req.query.message ? String(req.query.message) : '', req.currentUser)); } catch (error) { next(error); } }); app.get('/admin/playlists/new', function (req, res) { res.send(pages.renderPlaylistFormPage(req.query.message ? String(req.query.message) : '', req.currentUser)); }); app.get('/admin/playlists/:id/edit', async function (req, res, next) { try { const playlist = await common.fetchPlaylistById(pool, Number(req.params.id)); if (!playlist) { return res.status(404).send('Playlist not found'); } const data = await common.fetchAdminData(pool); res.send(pages.renderPlaylistEditPage(playlist, data, req.query.message ? String(req.query.message) : '', req.currentUser)); } catch (error) { next(error); } }); };