// /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 };