feat(sms): send class start date, days, and course time
Expose schedule fields on class and invoice templates so SMS can include Jalali start date, weekdays, and hour range.
This commit is contained in:
@@ -9,7 +9,9 @@ const { calculateMeta, escapeRegex, getSearchTerm } = require('../../utils/pagin
|
||||
const User = require('../users/userModel');
|
||||
const Course = require('../courses/courseModel');
|
||||
const Class = require('../classes/classModel');
|
||||
const Session = require('../sessions/sessionModel');
|
||||
const { sendInvoiceCreatedSms } = require('../../utils/senders/smsMessages');
|
||||
const { buildClassScheduleContext } = require('../../utils/classSchedule');
|
||||
const logger = require('../../utils/logger');
|
||||
|
||||
const getAllPayments = async (query) => {
|
||||
@@ -79,22 +81,34 @@ const createPayment = async (body, actorId = null) => {
|
||||
const user = await User.findById(payment.user).select('name phoneNumber').lean();
|
||||
if (user?.phoneNumber) {
|
||||
let courseName = '';
|
||||
let schedule = { classStartDate: '', classDays: '', courseTime: '' };
|
||||
if (payment.course) {
|
||||
const course = await Course.findById(payment.course).select('title').lean();
|
||||
if (course?.title) courseName = course.title;
|
||||
} else if (payment.classes && payment.classes.length > 0) {
|
||||
}
|
||||
if (payment.classes && payment.classes.length > 0) {
|
||||
const cls = await Class.findById(payment.classes[0]).populate('course', 'title').lean();
|
||||
if (cls?.course?.title) {
|
||||
courseName = cls.course.title;
|
||||
} else if (cls?.name) {
|
||||
courseName = cls.name;
|
||||
if (!courseName) {
|
||||
if (cls?.course?.title) {
|
||||
courseName = cls.course.title;
|
||||
} else if (cls?.name) {
|
||||
courseName = cls.name;
|
||||
}
|
||||
}
|
||||
if (cls) {
|
||||
const sessions = await Session.find({ class: cls._id })
|
||||
.select('day startTime endTime')
|
||||
.sort({ day: 1 })
|
||||
.lean();
|
||||
schedule = buildClassScheduleContext(cls, sessions);
|
||||
}
|
||||
}
|
||||
|
||||
await sendInvoiceCreatedSms(user.phoneNumber, {
|
||||
fullName: user.name || '',
|
||||
amount: payment.amount,
|
||||
course: courseName || '-'
|
||||
course: courseName || '-',
|
||||
...schedule
|
||||
}, user._id);
|
||||
}
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user