From 52ff5af388cc15bbbdc8cf47c5d9f2b02ac49a22 Mon Sep 17 00:00:00 2001 From: Rik Smale <13023439+WikiRik@users.noreply.github.com> Date: Tue, 24 Sep 2024 19:34:02 +0200 Subject: [PATCH] fix(stats): only use 1 application per user - attempt 2 (#795) Co-authored-by: Rik Smale --- lib/applications.js | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/lib/applications.js b/lib/applications.js index e371fa72..2242156c 100644 --- a/lib/applications.js +++ b/lib/applications.js @@ -355,7 +355,7 @@ exports.getStats = async (req, res) => { by_nationality: [] }; - let applicationQuery = { attributes: ['event_id', 'body_name', 'nationality'] }; + let applicationQuery = { attributes: ['user_id', 'event_id', 'body_name', 'nationality'] }; let eventQuery = { attributes: ['id', 'name'] }; if (req.query.season) { @@ -370,23 +370,12 @@ exports.getStats = async (req, res) => { .countByField(applications, 'event_id') .map(({ type, value }) => ({ type: events.find((event) => event.id === type).name, value })); - let uniqueApplicationUsersQuery = { - ...applicationQuery, - attributes: ['user_id', 'body_name', 'nationality', 'event_id'], - group: ['user_id', 'body_name', 'nationality', 'event_id'], - }; - - if (req.query.season) { - uniqueApplicationUsersQuery = { ...uniqueApplicationUsersQuery, group: ['user_id', 'body_name', 'nationality', 'event_id', 'event.id'] }; - } - - const uniqueApplicationUsers = await Application.findAll(uniqueApplicationUsersQuery); - - statsObject.by_body = helpers - .countByField(uniqueApplicationUsers, 'body_name'); + const uniqueApplicationUsers = Array.from( + new Map(applications.map((app) => [app.user_id, app])).values() + ); - statsObject.by_nationality = helpers - .countByField(uniqueApplicationUsers, 'nationality'); + statsObject.by_body = helpers.countByField(uniqueApplicationUsers, 'body_name'); + statsObject.by_nationality = helpers.countByField(uniqueApplicationUsers, 'nationality'); return res.json({ success: true,