fix(professors, settings): add auto-migration for legacy professors, deep populate user in class/session/course services, and fix SMS bypass number persistence
This commit is contained in:
@@ -86,15 +86,16 @@ const toPublicTemplates = (storedMap, notificationMap = {}) => {
|
||||
const formatBypassNumbers = (list) => {
|
||||
if (!Array.isArray(list)) return [];
|
||||
return list.map((item) => {
|
||||
const raw = item.toObject ? item.toObject() : item;
|
||||
const raw = item && item.toObject ? item.toObject() : item;
|
||||
if (!raw) return null;
|
||||
return {
|
||||
_id: raw._id,
|
||||
phoneNumber: raw.phoneNumber,
|
||||
_id: raw._id ? String(raw._id) : undefined,
|
||||
phoneNumber: raw.phoneNumber || '',
|
||||
label: raw.label || '',
|
||||
isActive: raw.isActive !== false,
|
||||
createdAt: raw.createdAt
|
||||
};
|
||||
});
|
||||
}).filter(Boolean);
|
||||
};
|
||||
|
||||
const getSettings = async () => {
|
||||
@@ -273,17 +274,20 @@ const saveSettings = async (body = {}) => {
|
||||
.map((item) => {
|
||||
const rawPhone = item.phoneNumber || item.phone;
|
||||
const normalized = normalizePhoneForBypass(rawPhone);
|
||||
const validId = (item._id && mongoose.Types.ObjectId.isValid(String(item._id)))
|
||||
? new mongoose.Types.ObjectId(String(item._id))
|
||||
: new mongoose.Types.ObjectId();
|
||||
return {
|
||||
_id: item._id || undefined,
|
||||
phoneNumber: normalized || rawPhone,
|
||||
_id: validId,
|
||||
phoneNumber: normalized || String(rawPhone || '').trim(),
|
||||
label: String(item.label || '').trim(),
|
||||
isActive: item.isActive !== false,
|
||||
createdAt: item.createdAt || new Date()
|
||||
createdAt: item.createdAt ? new Date(item.createdAt) : new Date()
|
||||
};
|
||||
})
|
||||
.filter((item) => item.phoneNumber && item.phoneNumber.length >= 10);
|
||||
|
||||
doc.set('smsBypassNumbers', nextBypass);
|
||||
doc.smsBypassNumbers = nextBypass;
|
||||
doc.markModified('smsBypassNumbers');
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const mongoose = require('mongoose');
|
||||
const { normalizePhoneForBypass } = require('./messagingFlags');
|
||||
|
||||
test('SMS Bypass Numbers Utilities', async (t) => {
|
||||
|
||||
Reference in New Issue
Block a user