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
+8 -69
View File
@@ -13,8 +13,7 @@ const {
checkValidations,
generateRandomDigits
} = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module')
const { phrases } = require('../plugins/SMS_Phrases')
const sms = require('../plugins/SMS_Module')
const { notifyAgent } = require('../WebSocket/controllers/agent_EventsController')
const { notifyUser } = require('../WebSocket/controllers/user_EventsController')
const _faSr = _sr.fa
@@ -24,10 +23,6 @@ function ArpaDateFormat(date) {
return moment(date).format('YYYY-MM-DD HH:mm:ss')
}
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
/// ///////////////// users
module.exports.add_transaction = [
[
@@ -60,24 +55,10 @@ module.exports.add_transaction = [
if (user.isAgent && agent !== 'main')
return res406(res, 'نمایندگان فقط میتوانند به خود شرکت آسان سرویس فرم ارسال نمایند')
function getMessageTxt(transNumber) {
const msgArray = [
'مشتری گرامی',
user.first_name + ' ' + user.last_name,
'\n',
'کالاهای شما با شماره پذیرش موقت',
transNumber,
'در سایت آسان سرویس ثبت گردید. کالاهای ارسالی شما پس از دریافت توسط واحد گارانتی، بررسی شده و به شما اطلاع رسانی خواهد شد.',
'\n',
phrases.signature
]
return msgArray.join(' ')
}
// TODO: here arpa service
if (agent === 'main') {
const ArpaResponse = await saveTransactionToArpa(data, items, db_name)
await TransactionDraft.findByIdAndRemove(draftId)
SMS([user.mobile_number], getMessageTxt(ArpaResponse))
await sms.transaction.submitted(user.mobile_number, ArpaResponse, thisTime)
notifyUser('updateDraftsCount', userId)
return res.json({
host: 'ar',
@@ -97,7 +78,7 @@ module.exports.add_transaction = [
const transaction = new Transaction(data)
await transaction.save()
await TransactionDraft.findByIdAndRemove(draftId)
SMS([user.mobile_number], getMessageTxt(transaction.TempReceiptTransNumber))
await sms.transaction.submitted(user.mobile_number, transaction.TempReceiptTransNumber, thisTime)
notifyUser('updateDraftsCount', userId)
notifyAgent('newAgentInbox', agent)
notifyAgent('updateAgentInbox', agent)
@@ -202,69 +183,27 @@ module.exports.change_transaction_status_by_agent = [
transaction.status = status
transaction.statusHistory.push({ status, date: thisTime })
let smsMessage
// different status methods
if (status === 'recieved') {
const receiptTN = transaction.TempReceiptTransNumber + 'R' + generateRandomDigits(2)
transaction.ItemReceptionTransNumber = receiptTN
transaction.ItemReceptionTransDate = ArpaDateFormat(thisTime)
smsMessage = [
' کاربر گرامی فرم گارانتی شما با کد پذیرش موقت ',
transaction.TempReceiptTransNumber,
' در تاریخ ',
SmsDateFormat(thisTime),
' تحویل دفتر نمایندگی و پذیرش شد. ',
'\n',
' کد پذیرش: ',
receiptTN,
'\n',
phrases.signature
]
await sms.transaction.received(transaction.cTel1, transaction.TempReceiptTransNumber, receiptTN, thisTime)
}
if (status === 'ongoing') {
smsMessage = [
' کاربر گرامی فرم گارانتی شما با کد پذیرش ',
transaction.ItemReceptionTransNumber,
' در تاریخ ',
SmsDateFormat(thisTime),
' در دست اقدام قرار گرفت. ',
'\n',
phrases.signature
]
await sms.transaction.ongoing(transaction.cTel1, transaction.ItemReceptionTransNumber, thisTime)
}
if (status === 'waiting') {
smsMessage = [
' کاربر گرامی فرم گارانتی شما با کد پذیرش ',
transaction.ItemReceptionTransNumber,
' در تاریخ ',
SmsDateFormat(thisTime),
' در انتظار قطعه میباشد. ',
'\n',
phrases.signature
]
await sms.transaction.waiting(transaction.cTel1, transaction.ItemReceptionTransNumber, thisTime)
}
if (status === 'delivered') {
if (deliveryCode) transaction.deliveryCode = deliveryCode
function deliveryCodePhrase() {
if (deliveryCode.length) return `کد پیگیری مرسوله: ${deliveryCode}` + '\n'
else return ''
}
smsMessage = [
' کاربر گرامی فرم گارانتی شما با کد پذیرش ',
transaction.ItemReceptionTransNumber,
' در تاریخ ',
SmsDateFormat(thisTime),
' تحویل شد. ',
'\n',
deliveryCodePhrase(),
phrases.signature
]
await sms.transaction.delivered(transaction.cTel1, transaction.ItemReceptionTransNumber, deliveryCode, thisTime)
const surveyData = {
code: transaction.ItemReceptionTransNumber,
@@ -277,7 +216,7 @@ module.exports.change_transaction_status_by_agent = [
})
}
await SMS([transaction.cTel1], smsMessage.join(''))
// SMS call now handled above in the individual status methods
await transaction.save()
return res.json({ message: _faSr.response.success_save })