feat(settings): support dynamic number of SMS template variables
This commit is contained in:
@@ -15,6 +15,11 @@ const resolveUserIdByPhone = async (phoneNumber) => {
|
||||
|
||||
const sendAccountCreatedSms = async (receiver, username, password, userId = null) => {
|
||||
const resolvedUserId = userId || await resolveUserIdByPhone(receiver);
|
||||
let fullName = '';
|
||||
if (resolvedUserId) {
|
||||
const user = await User.findById(resolvedUserId).select('name').lean();
|
||||
if (user?.name) fullName = user.name;
|
||||
}
|
||||
const { templateId, variables } = await getSmsTemplate('accountCreated');
|
||||
return recordAndSend({
|
||||
userId: resolvedUserId,
|
||||
@@ -24,13 +29,22 @@ const sendAccountCreatedSms = async (receiver, username, password, userId = null
|
||||
relatedEvent: 'user.created',
|
||||
sendFn: () => sendSingleSms(receiver, templateId, buildSmsParameters(variables, {
|
||||
username,
|
||||
password
|
||||
password,
|
||||
fullName: fullName || username,
|
||||
name: fullName || username,
|
||||
phoneNumber: receiver,
|
||||
mobile: receiver
|
||||
}))
|
||||
});
|
||||
};
|
||||
|
||||
const sendClassRegisteredSms = async (receiver, className, userId = null) => {
|
||||
const sendClassRegisteredSms = async (receiver, className, userId = null, extraContext = {}) => {
|
||||
const resolvedUserId = userId || await resolveUserIdByPhone(receiver);
|
||||
let fullName = extraContext.fullName || '';
|
||||
if (!fullName && resolvedUserId) {
|
||||
const user = await User.findById(resolvedUserId).select('name').lean();
|
||||
if (user?.name) fullName = user.name;
|
||||
}
|
||||
const { templateId, variables } = await getSmsTemplate('classRegistered');
|
||||
return recordAndSend({
|
||||
userId: resolvedUserId,
|
||||
@@ -39,13 +53,23 @@ const sendClassRegisteredSms = async (receiver, className, userId = null) => {
|
||||
body: `ثبتنام شما در کلاس «${className}» انجام شد.`,
|
||||
relatedEvent: 'user.enrolled',
|
||||
sendFn: () => sendSingleSms(receiver, templateId, buildSmsParameters(variables, {
|
||||
className
|
||||
className,
|
||||
courseName: extraContext.courseName || className,
|
||||
fullName: fullName || 'کارآموز',
|
||||
phoneNumber: receiver,
|
||||
mobile: receiver,
|
||||
...extraContext
|
||||
}))
|
||||
});
|
||||
};
|
||||
|
||||
const sendClassReminderSms = async (receiver, className, time, place = '', userId = null) => {
|
||||
const sendClassReminderSms = async (receiver, className, time, place = '', userId = null, extraContext = {}) => {
|
||||
const resolvedUserId = userId || await resolveUserIdByPhone(receiver);
|
||||
let fullName = extraContext.fullName || '';
|
||||
if (!fullName && resolvedUserId) {
|
||||
const user = await User.findById(resolvedUserId).select('name').lean();
|
||||
if (user?.name) fullName = user.name;
|
||||
}
|
||||
const { templateId, variables } = await getSmsTemplate('classReminder');
|
||||
return recordAndSend({
|
||||
userId: resolvedUserId,
|
||||
@@ -55,8 +79,13 @@ const sendClassReminderSms = async (receiver, className, time, place = '', userI
|
||||
relatedEvent: 'session.reminder',
|
||||
sendFn: () => sendSingleSms(receiver, templateId, buildSmsParameters(variables, {
|
||||
className,
|
||||
courseName: extraContext.courseName || className,
|
||||
time,
|
||||
place: place || '-'
|
||||
place: place || '-',
|
||||
fullName: fullName || 'کارآموز',
|
||||
phoneNumber: receiver,
|
||||
mobile: receiver,
|
||||
...extraContext
|
||||
}))
|
||||
});
|
||||
};
|
||||
@@ -90,7 +119,9 @@ const sendInvoiceCreatedSms = async (receiver, payload, userId = null) => {
|
||||
sendFn: () => sendSingleSms(receiver, templateId, buildSmsParameters(variables, {
|
||||
fullName: fullNameLabel,
|
||||
amount: amountLabel,
|
||||
course: courseLabel
|
||||
course: courseLabel,
|
||||
phoneNumber: receiver,
|
||||
mobile: receiver
|
||||
}))
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user