From 6994170a04dcb1e652a0a831bece4a5a16e5d52c Mon Sep 17 00:00:00 2001 From: Damien Broqua Date: Sun, 31 Dec 2023 18:02:02 +0100 Subject: [PATCH] Added on-air feature --- src/middleware/Albums.js | 25 +++++++++++++++++++++++++ src/routes/ma-collection.js | 14 ++++++++++++++ views/index.ejs | 15 +++++++++------ 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/src/middleware/Albums.js b/src/middleware/Albums.js index 731ad4f..50c1655 100644 --- a/src/middleware/Albums.js +++ b/src/middleware/Albums.js @@ -464,6 +464,31 @@ Publié automatiquement via #musictopus`; ); } + /** + * Méthode permettant de choisir un album de manière aléatoire dans la collection d'un utilisateur + */ + async onAir() { + const { _id: User } = this.req.user; + const count = await AlbumsModel.count({ + User, + }); + + const items = await AlbumsModel.find( + { + User, + }, + [], + { + skip: Math.floor(Math.random() * (count + 1)), + limit: 1, + } + ); + + this.req.params.itemId = items[0]._id; + + await this.loadItem(); + } + /** * Méthode permettant de créer la page "collection/:userId" */ diff --git a/src/routes/ma-collection.js b/src/routes/ma-collection.js index 32189d3..1100bd9 100644 --- a/src/routes/ma-collection.js +++ b/src/routes/ma-collection.js @@ -24,6 +24,20 @@ router.route("/").get(ensureLoggedIn("/connexion"), async (req, res, next) => { } }); +router + .route("/on-air") + .get(ensureLoggedIn("/connexion"), async (req, res, next) => { + try { + const page = new Albums(req, "mon-compte/ma-collection/details"); + + await page.onAir(); + + render(res, page); + } catch (err) { + next(err); + } + }); + router .route("/exporter") .get(ensureLoggedIn("/connexion"), async (req, res, next) => { diff --git a/views/index.ejs b/views/index.ejs index dfa039d..2fca1a8 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -87,12 +87,19 @@ Ma collection + + On air + Exporter ma collection Importer une collection +
+ + Déconnexion + <% } %> @@ -104,19 +111,15 @@ + <% if ( !user ) { %> + <% } %>