feat(admin): add pre-registrant alert detectors
This commit is contained in:
parent
824364d526
commit
4bae4b0ec3
2 changed files with 104 additions and 1 deletions
|
|
@ -116,4 +116,49 @@ export async function detectSuspendedMembers() {
|
|||
}
|
||||
}
|
||||
|
||||
function preRegItem(preReg, sublabel) {
|
||||
return {
|
||||
id: String(preReg._id),
|
||||
label: preReg.name || preReg.email,
|
||||
sublabel,
|
||||
href: '/admin/pre-registrants'
|
||||
}
|
||||
}
|
||||
|
||||
export async function detectPreRegistrantSelectedNotInvited() {
|
||||
await connectDB()
|
||||
const cutoff = daysAgo(ALERT_THRESHOLDS.PREREG_SELECTED_DAYS)
|
||||
const preRegs = await PreRegistration
|
||||
.find({
|
||||
status: 'selected',
|
||||
updatedAt: { $lte: cutoff }
|
||||
})
|
||||
.select('name email updatedAt')
|
||||
.lean()
|
||||
return {
|
||||
type: 'preregistrant_selected_not_invited',
|
||||
severity: 'attention',
|
||||
title: 'Pre-registrants selected but not invited',
|
||||
items: preRegs.map((p) =>
|
||||
preRegItem(p, `${p.email} — ${daysSince(p.updatedAt)} days selected`)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
export async function detectPreRegistrantExpired() {
|
||||
await connectDB()
|
||||
const preRegs = await PreRegistration
|
||||
.find({ status: 'expired' })
|
||||
.select('name email updatedAt')
|
||||
.lean()
|
||||
return {
|
||||
type: 'preregistrant_expired',
|
||||
severity: 'attention',
|
||||
title: 'Expired pre-registrant invitations',
|
||||
items: preRegs.map((p) =>
|
||||
preRegItem(p, `${p.email} — expired ${daysSince(p.updatedAt)} days ago`)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// Aggregator lands in task 8.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue