feat: sms module

This commit is contained in:
mahyargdz
2025-07-09 11:55:58 +03:30
parent 43e49f96f7
commit ac1391f9ce
15 changed files with 1175 additions and 464 deletions
File diff suppressed because it is too large Load Diff
+15 -16
View File
@@ -7,10 +7,10 @@ const Survey = require('../models/Survey')
const Announcement = require('../models/Announcement')
const { saveUserToArpa, updateUserOnArpa } = require('../ArpaWebservice')
const { generateRandomDigitsInRangeOf } = require('./controllersHelperFunctions')
const { SMS } = require('./SMS_Module')
const sms = require('./SMS_Module')
const { phrases } = require('./SMS_Phrases')
// eslint-disable-next-line import/order
const Cron = require("cron").CronJob;
const Cron = require('cron').CronJob
/// /////// times
const minute = 1000 * 60
@@ -19,33 +19,32 @@ const day = hour * 24
/// /////// jobs
const job = new Cron("0 0 * * *", async () => {
const job = new Cron('0 0 * * *', async () => {
console.log('✅ --job: check devices for activation is running')
try {
const devices = await InstalledDevice.find({
$or: [
{ status: 0 },
{ status: 2 }
]
}).populate('userId', 'mobile_number').populate('deviceId', 'model')
$or: [{ status: 0 }, { status: 2 }]
})
.populate('userId', 'mobile_number')
.populate('deviceId', 'model')
for await (const device of devices) {
// item time and timeout
const itemTime = Date.parse(device.created_at)
const timeout = itemTime + (day * 3)
const timeout = itemTime + day * 3
if (Date.now() >= timeout && !device.check) {
device.check = true;
device.check = true
await device.save()
SMS([device.userId.mobile_number], `کاربر گرامی\n \n \nجهت ثبت سیمکارت برای دستگاه ${device.deviceId.model} \nبا شناسه : ${device.IMEI} \nلطفا زود تر اقدام کنید `)
await sms.auth.sendOTP(
device.userId.mobile_number,
`کاربر گرامی\n \n \nجهت ثبت سیمکارت برای دستگاه ${device.deviceId.model} \nبا شناسه : ${device.IMEI} \nلطفا زود تر اقدام کنید `
)
}
}
} catch (e) {
console.log(e)
}
})
const jobs = {
checkUserActivation() {
@@ -179,7 +178,7 @@ const jobs = {
phrases.signature
]
SMS([item.mobile], msg.join(''))
await sms.auth.sendOTP(item.mobile, msg.join(''))
}
/// /////////////////////////////////////////////////////// fake data for tests
@@ -227,7 +226,7 @@ const jobs = {
'\n',
`https://asan-service.com/account/survey?code=${item.code}`
]
SMS([item.user.mobile_number], msg.join(' '))
await sms.auth.sendOTP(item.user.mobile_number, msg.join(' '))
item.smsSent = true
await item.save()
}