Initial commit: teaching institution management API.
Express/MongoDB backend with JWT auth, RBAC, S3 uploads, notifications, and scheduled jobs.
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
// /utils/senders/smsMessages.js
|
||||
'use strict';
|
||||
|
||||
const config = require('../../config/config');
|
||||
const { sendSingleSms } = require('./sms.base');
|
||||
const { recordAndSend } = require('./notificationRecorder');
|
||||
const User = require('../../components/users/userModel');
|
||||
|
||||
const resolveUserIdByPhone = async (phoneNumber) => {
|
||||
if (!phoneNumber) return null;
|
||||
const user = await User.findOne({ phoneNumber: String(phoneNumber) }).select('_id').lean();
|
||||
return user?._id || null;
|
||||
};
|
||||
|
||||
const sendAccountCreatedSms = async (receiver, username, password) => {
|
||||
const userId = await resolveUserIdByPhone(receiver);
|
||||
return recordAndSend({
|
||||
userId,
|
||||
channel: 'sms',
|
||||
subject: 'ایجاد حساب کاربری',
|
||||
body: `حساب کاربری شما ایجاد شد. نام کاربری: ${username}`,
|
||||
relatedEvent: 'user.created',
|
||||
sendFn: () => sendSingleSms(receiver, config.SMS_TEMPLATE_ACCOUNT_CREATED, [
|
||||
{ name: 'username', value: String(username) },
|
||||
{ name: 'password', value: String(password) }
|
||||
])
|
||||
});
|
||||
};
|
||||
|
||||
const sendClassRegisteredSms = async (receiver, className, userId = null) => {
|
||||
const resolvedUserId = userId || await resolveUserIdByPhone(receiver);
|
||||
return recordAndSend({
|
||||
userId: resolvedUserId,
|
||||
channel: 'sms',
|
||||
subject: 'ثبتنام در کلاس',
|
||||
body: `ثبتنام شما در کلاس «${className}» انجام شد.`,
|
||||
relatedEvent: 'user.enrolled',
|
||||
sendFn: () => sendSingleSms(receiver, config.SMS_TEMPLATE_CLASS_REGISTERED, [
|
||||
{ name: 'className', value: String(className) }
|
||||
])
|
||||
});
|
||||
};
|
||||
|
||||
const sendClassReminderSms = async (receiver, className, time, place = '', userId = null) => {
|
||||
const resolvedUserId = userId || await resolveUserIdByPhone(receiver);
|
||||
return recordAndSend({
|
||||
userId: resolvedUserId,
|
||||
channel: 'sms',
|
||||
subject: 'یادآوری کلاس',
|
||||
body: `یادآوری کلاس «${className}» ساعت ${time} — مکان: ${place || '-'}`,
|
||||
relatedEvent: 'session.reminder',
|
||||
sendFn: () => sendSingleSms(receiver, config.SMS_TEMPLATE_CLASS_REMINDER, [
|
||||
{ name: 'className', value: String(className) },
|
||||
{ name: 'time', value: String(time) },
|
||||
{ name: 'place', value: String(place || '-') }
|
||||
])
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
sendAccountCreatedSms,
|
||||
sendClassRegisteredSms,
|
||||
sendClassReminderSms
|
||||
};
|
||||
Reference in New Issue
Block a user