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:
@@ -41,30 +41,48 @@ const formatProfessorDoc = (doc) => {
|
||||
const raw = doc.toObject ? doc.toObject({ virtuals: true }) : doc;
|
||||
const user = raw.user && typeof raw.user === 'object' ? raw.user : null;
|
||||
|
||||
const rawName = String(user?.name || raw.name || '').trim();
|
||||
const parts = rawName.split(/\s+/);
|
||||
let firstName = rawName;
|
||||
let surname = '';
|
||||
if (parts.length > 1) {
|
||||
firstName = parts[0];
|
||||
surname = parts.slice(1).join(' ');
|
||||
const rawUserName = String(user?.name || '').trim();
|
||||
const rawDocName = String(raw.name || '').trim();
|
||||
const rawSurname = String(raw.surname || '').trim();
|
||||
|
||||
let fullName = rawUserName || (rawDocName ? `${rawDocName} ${rawSurname}`.trim() : '');
|
||||
let firstName = '';
|
||||
let surname = rawSurname;
|
||||
|
||||
if (fullName) {
|
||||
const parts = fullName.split(/\s+/);
|
||||
if (parts.length > 1) {
|
||||
firstName = parts[0];
|
||||
surname = parts.slice(1).join(' ');
|
||||
} else {
|
||||
firstName = fullName;
|
||||
}
|
||||
} else {
|
||||
firstName = rawDocName;
|
||||
fullName = `${firstName} ${surname}`.trim();
|
||||
}
|
||||
|
||||
const rawPhone = String(user?.phoneNumber || raw.phoneNumber || raw.phone || '').trim();
|
||||
const rawNationalId = String(user?.nationalIdCode || raw.nationalIdCode || raw.nationalId || '').trim();
|
||||
const rawEmail = String(user?.email || raw.email || '').trim();
|
||||
const rawCard = String(user?.cardNumber || raw.cardNumber || '').trim();
|
||||
const rawShaba = String(user?.shabaNumber || raw.shabaNumber || raw.iban || '').trim();
|
||||
|
||||
return {
|
||||
_id: raw._id,
|
||||
id: raw._id,
|
||||
user: user ? (user._id || user) : raw.user,
|
||||
userId: user ? (user._id || user) : raw.user,
|
||||
name: firstName,
|
||||
surname: surname || raw.surname || '',
|
||||
fullName: rawName,
|
||||
nationalIdCode: user?.nationalIdCode || raw.nationalIdCode || '',
|
||||
nationalId: user?.nationalIdCode || raw.nationalIdCode || '',
|
||||
phoneNumber: user?.phoneNumber || raw.phoneNumber || '',
|
||||
phone: user?.phoneNumber || raw.phoneNumber || '',
|
||||
email: user?.email || raw.email || '',
|
||||
cardNumber: user?.cardNumber || raw.cardNumber || '',
|
||||
shabaNumber: user?.shabaNumber || raw.shabaNumber || '',
|
||||
name: firstName || fullName || 'استاد',
|
||||
surname: surname || '',
|
||||
fullName: fullName || firstName || 'استاد',
|
||||
nationalIdCode: rawNationalId,
|
||||
nationalId: rawNationalId,
|
||||
phoneNumber: rawPhone,
|
||||
phone: rawPhone,
|
||||
email: rawEmail,
|
||||
cardNumber: rawCard,
|
||||
shabaNumber: rawShaba,
|
||||
bio: raw.bio || '',
|
||||
expertise: Array.isArray(raw.expertise) ? raw.expertise : [],
|
||||
courses: raw.courses || [],
|
||||
|
||||
Reference in New Issue
Block a user