diff --git a/packages/analytics/src/controllers/index.js b/packages/analytics/src/controllers/index.js index d5a6967..aa9980f 100644 --- a/packages/analytics/src/controllers/index.js +++ b/packages/analytics/src/controllers/index.js @@ -1,15 +1,15 @@ import { userCount } from '../models/users.js' -import { sessionCount, sessionCompleted } from '../models/sessions.js' +import { questCount, questCompleted } from '../models/profiles.js' // eslint-disable-next-line import/prefer-default-export export async function homeController(req, res) { const payload = { title: 'Linux Odyssey Admin', userCount: await userCount(), - sessionCount: await sessionCount(), - sessionCompleted: await sessionCompleted(), + questCount: await questCount(), + questCompleted: await questCompleted(), } payload.completedRate = - Math.round((payload.sessionCompleted / payload.sessionCount) * 10000) / 100 + Math.round((payload.questCompleted / payload.questCount) * 10000) / 100 res.render('home', payload) } diff --git a/packages/analytics/src/models/profiles.js b/packages/analytics/src/models/profiles.js new file mode 100644 index 0000000..669afff --- /dev/null +++ b/packages/analytics/src/models/profiles.js @@ -0,0 +1,20 @@ +/* eslint-disable object-shorthand */ +/* eslint-disable func-names */ +import { UserProfile } from '@linux-odyssey/models' + +export function questCount() { + return UserProfile.find().count() +} + +export function questCompleted() { + return UserProfile.find({ + $where: function () { + for (const key in this.progress) { + if (this.progress[key].completed === true) { + return true + } + } + return false + }, + }).count() +} diff --git a/packages/analytics/views/home.handlebars b/packages/analytics/views/home.handlebars index cd8148a..3098257 100644 --- a/packages/analytics/views/home.handlebars +++ b/packages/analytics/views/home.handlebars @@ -7,12 +7,12 @@