Add admin study user enrollment list
This commit is contained in:
@@ -2931,6 +2931,29 @@ app.get('/api/admin-stats', requireAdminAuth, (_req, res) => {
|
||||
count: enrollmentCountsBySlug[study.slug] ?? 0,
|
||||
}))
|
||||
.sort((a, b) => b.count - a.count)
|
||||
const studyCatalogBySlug = new Map(getStudyCatalog().map(study => [study.slug, study]))
|
||||
const users = studyUsers
|
||||
.map(user => {
|
||||
const enrolledStudySlugs = Array.isArray(user?.enrolledStudySlugs) ? user.enrolledStudySlugs : []
|
||||
const enrolledStudies = enrolledStudySlugs
|
||||
.map(slug => {
|
||||
const study = studyCatalogBySlug.get(slug)
|
||||
if (!study) return null
|
||||
return { slug: study.slug, title: study.title }
|
||||
})
|
||||
.filter(Boolean)
|
||||
|
||||
return {
|
||||
id: user.id,
|
||||
username: user.username,
|
||||
displayName: user.displayName ?? '',
|
||||
enrolledStudies,
|
||||
}
|
||||
})
|
||||
.sort((a, b) => {
|
||||
if (b.enrolledStudies.length !== a.enrolledStudies.length) return b.enrolledStudies.length - a.enrolledStudies.length
|
||||
return a.username.localeCompare(b.username)
|
||||
})
|
||||
const enrolledUsers = studyUsers.filter(user => (user.enrolledStudySlugs?.length ?? 0) > 0).length
|
||||
const totalEnrollments = Object.values(enrollmentCountsBySlug).reduce((sum, count) => sum + count, 0)
|
||||
|
||||
@@ -2978,6 +3001,7 @@ app.get('/api/admin-stats', requireAdminAuth, (_req, res) => {
|
||||
enrolledUsers,
|
||||
totalEnrollments,
|
||||
enrollmentsByStudy,
|
||||
users,
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user