This commit is contained in:
Mahyar Khanbolooki
2025-07-13 16:45:02 +03:30
15 changed files with 5991 additions and 3466 deletions
+4813 -3001
View File
File diff suppressed because it is too large Load Diff
+7 -15
View File
@@ -5,9 +5,8 @@ const { secretKey } = require('../authentication')
const { _sr } = require('../plugins/serverResponses')
const { checkValidations } = require('../plugins/controllersHelperFunctions')
const UserGPS = require('../models/GPS.User')
const { generateRandomDigits
} = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module')
const { generateRandomDigits } = require('../plugins/controllersHelperFunctions')
const sms = require('../plugins/SMS_Module')
module.exports.login_with_pass = [
[
body('username')
@@ -56,7 +55,7 @@ module.exports.login_with_pass = [
})
// eslint-disable-next-line eqeqeq
if (user?.lastIP && user?.lastIP != req.ip) {
SMS([user.mobile_number], "کاربر گرامی، \n با دستگاه جدیدی به اکانت شما در آسان سرویس وارد شدند")
await sms.auth.deviceLogin(user.mobile_number, req.ip)
}
user.lastIP = req.ip
user.token = token
@@ -72,12 +71,8 @@ module.exports.login_with_pass = [
module.exports.login_with_otp = [
[
body('mobile_number')
.notEmpty()
.withMessage(_sr.fa.required.phone_number),
body('otp')
.notEmpty()
.withMessage(_sr.fa.required.phone_number)
body('mobile_number').notEmpty().withMessage(_sr.fa.required.phone_number),
body('otp').notEmpty().withMessage(_sr.fa.required.phone_number)
],
checkValidations(validationResult),
async (req, res) => {
@@ -85,7 +80,7 @@ module.exports.login_with_otp = [
const { mobile_number, otp } = req.body
const user = await UserGPS.findOne({ mobile_number })
if (!user) throw new Error(_sr.fa.not_found.user_id)
if (user.otp !== otp) throw new Error("کد اشتباه است")
if (user.otp !== otp) throw new Error('کد اشتباه است')
if (user.otp === otp) {
if (!user.active) {
throw new Error('حساب شما هنوز تاییده نشده است')
@@ -95,21 +90,18 @@ module.exports.login_with_otp = [
})
// eslint-disable-next-line eqeqeq
if (user?.lastIP && user?.lastIP != req.ip) {
SMS([user.mobile_number], "کاربر گرامی، \n با دستگاه جدیدی به اکانت شما در آسان سرویس وارد شدند")
await sms.auth.deviceLogin(user.mobile_number, req.ip)
}
user.otp = generateRandomDigits(6)
user.lastIP = req.ip
user.token = token
user.save()
return res.status(200).json({ token })
}
} catch (err) {
return res.status(422).json({
validation: { otp: { msg: err.message } }
})
}
}
]
+2 -4
View File
@@ -4,7 +4,7 @@ const { body, validationResult, param } = require('express-validator')
const uid = require('uuid')
const User = require('../models/GPS.User')
const { _sr } = require('../plugins/serverResponses')
const { SMS } = require('../plugins/SMS_Module')
const sms = require('../plugins/SMS_Module')
const {
res500,
checkValidations,
@@ -29,9 +29,7 @@ function sendConfirmationSMS(userId) {
user.otp = mobileKey
await user.save()
const smsMsg = ['این شماره در وبسایت آسان سرویس ثبت گردیده.', ' کد تایید شماره همراه: ', mobileKey]
await SMS([user.mobile_number], smsMsg.join(''))
await sms.auth.mobileVerificationCode(user.mobile_number, mobileKey, new Date())
resolve()
} catch (err) {
+6 -49
View File
@@ -9,7 +9,7 @@ const {
checkValidations,
generateRandomDigits
} = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module')
const sms = require('../plugins/SMS_Module')
// const { phrases } = require('../plugins/SMS_Phrases')
// const { notifyAgent } = require('../WebSocket/controllers/agent_EventsController')
const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController')
@@ -20,10 +20,6 @@ function ArpaDateFormat(date) {
return moment(date).format('YYYY-MM-DD HH:mm:ss')
}
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
/// ///////////////// agent
module.exports.add_buffer_request = [
async (req, res) => {
@@ -172,15 +168,7 @@ module.exports.change_br_status_to_sent_by_agent = [
br.sendDate = ArpaDateFormat(thisTime)
// send sms for agent
const smsMsg = [
' نماینده گرامی درخواست کالای بافر شما در تاریخ ',
SmsDateFormat(thisTime),
' با کد پیگیری ',
trackingCode,
' برای شرکت ارسال شد. '
]
SMS([br.agent_id.mobile_number], smsMsg.join(''))
await sms.bufferRequest.sent(br.agent_id.mobile_number, trackingCode, thisTime)
await br.save()
notifyAdmin('updateNewBufferRequests')
@@ -244,15 +232,7 @@ module.exports.get_one_br_for_admin = [
br.statusHistory.push({ status: 'ongoing', date: thisTime })
await br.save()
const smsMsg = [
' نماینده گرامی درخواست کالای بافر شما با کد پیگیری ',
br.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' در دست اقدام قرار گرفت. '
]
SMS([br.agent_id.mobile_number], smsMsg.join(''))
await sms.bufferRequest.ongoing(br.agent_id.mobile_number, br.trackingCode, thisTime)
notifyAdmin('updateNewBufferRequests')
}
return res.json(br)
@@ -294,38 +274,15 @@ module.exports.change_br_status_by_admin = [
br.status = status
br.statusHistory.push({ status, date: thisTime })
let smsMessage
// differenet status methods
// different status methods
if (status === 'waiting') {
smsMessage = [
' نماینده گرامی درخواست کالای بافر شما با کد پیگیری ',
br.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' در انتظار قطعه میباشد. '
]
await sms.bufferRequest.waiting(br.agent_id.mobile_number, br.trackingCode, thisTime)
}
if (status === 'delivered') {
if (deliveryCode) br.deliveryCode = deliveryCode
function deliveryCodePhrase() {
if (deliveryCode.length) return `کد پیگیری مرسوله: ${deliveryCode}` + '\n'
else return ''
}
smsMessage = [
' نماینده گرامی درخواست کالای بافر شما با کد پیگیری ',
br.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' تحویل شد. ',
'\n',
deliveryCodePhrase()
]
await sms.bufferRequest.delivered(br.agent_id.mobile_number, br.trackingCode, deliveryCode, thisTime)
}
await SMS([br.agent_id.mobile_number], smsMessage.join(''))
await br.save()
return res.json({ message: _faSr.response.success_save })
} catch (e) {
@@ -9,7 +9,7 @@ const {
checkValidations,
generateRandomDigits
} = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module')
const sms = require('../plugins/SMS_Module')
const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController')
const _faSr = _sr.fa
@@ -18,10 +18,6 @@ function ArpaDateFormat(date) {
return moment(date).format('YYYY-MM-DD HH:mm:ss')
}
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
/// ///////////////// agent
module.exports.add_guaranteeReport = [
async (req, res) => {
@@ -201,15 +197,7 @@ module.exports.change_gr_status_to_sent_by_agent = [
gr.sendDate = ArpaDateFormat(thisTime)
// send sms for agent
const smsMsg = [
' نماینده گرامی فرم گزارش عملکرد گارانتی شما در تاریخ ',
SmsDateFormat(thisTime),
' با کد پیگیری ',
trackingCode,
' برای شرکت ارسال شد. '
]
SMS([gr.agent_id.mobile_number], smsMsg.join(''))
await sms.guaranteeReport.sent(gr.agent_id.mobile_number, trackingCode, thisTime)
await gr.save()
notifyAdmin('updateNewGuaranteeReports')
+2 -19
View File
@@ -14,17 +14,11 @@ const {
checkMobileNumber,
normalizeMobileNumber
} = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module')
const { phrases } = require('../plugins/SMS_Phrases')
const sms = require('../plugins/SMS_Module')
///
const _faSr = _sr.fa
// date formaters
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
module.exports.addLottery = [
[
body('title').notEmpty().withMessage(_faSr.required.title),
@@ -338,18 +332,7 @@ module.exports.enrollParticipant = [
lottery.markModified('participants')
await lottery.save()
const msg = [
fullName,
' عزیز، اطلاعات شما در تاریخ ',
SmsDateFormat(Date.now()),
' برای شرکت در قرعه کشی آسان سرویس ثبت گردید. ',
'\n',
'کد پیگیری: ',
enrollCode,
'\n',
phrases.signature
]
SMS([normalizedMN], msg.join(''))
await sms.lottery.enrollment(normalizedMN, fullName, enrollCode, Date.now())
return res.json({ message: 'اطلاعات شما با موفیقت در سیستم ثبت شد. کد پیگیری به تلفن همراه شما ارسال گردید' })
} catch (e) {
return res500(res, `there is an error here --- ${e}`)
@@ -9,7 +9,7 @@ const {
checkValidations,
generateRandomDigits
} = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module')
const sms = require('../plugins/SMS_Module')
const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController')
const _faSr = _sr.fa
@@ -18,10 +18,6 @@ function ArpaDateFormat(date) {
return moment(date).format('YYYY-MM-DD HH:mm:ss')
}
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
/// ///////////////// agent
module.exports.add_oldPiece_request = [
async (req, res) => {
@@ -177,15 +173,7 @@ module.exports.change_opr_status_to_sent_by_agent = [
opr.sendDate = ArpaDateFormat(thisTime)
// send sms for agent
const smsMsg = [
' نماینده گرامی درخواست قطعه داغی شما در تاریخ ',
SmsDateFormat(thisTime),
' با کد پیگیری ',
trackingCode,
' برای شرکت ارسال شد. '
]
SMS([opr.agent_id.mobile_number], smsMsg.join(''))
await sms.oldPieceRequest.sent(opr.agent_id.mobile_number, trackingCode, thisTime)
await opr.save()
notifyAdmin('updateNewOldPieceRequests')
@@ -247,15 +235,7 @@ module.exports.get_one_opr_for_admin = [
opr.statusHistory.push({ status: 'ongoing', date: thisTime })
await opr.save()
const smsMsg = [
' نماینده گرامی درخواست قطعه داغی شما با کد پیگیری ',
opr.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' در دست اقدام قرار گرفت. '
]
SMS([opr.agent_id.mobile_number], smsMsg.join(''))
await sms.oldPieceRequest.ongoing(opr.agent_id.mobile_number, opr.trackingCode, thisTime)
notifyAdmin('updateNewOldPieceRequests')
}
return res.json(opr)
@@ -297,38 +277,15 @@ module.exports.change_opr_status_by_admin = [
opr.status = status
opr.statusHistory.push({ status, date: thisTime })
let smsMessage
// differenet status methods
// different status methods
if (status === 'waiting') {
smsMessage = [
' نماینده گرامی درخواست قطعه داغی شما با کد پیگیری ',
opr.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' در انتظار قطعه میباشد. '
]
await sms.oldPieceRequest.waiting(opr.agent_id.mobile_number, opr.trackingCode, thisTime)
}
if (status === 'delivered') {
if (deliveryCode) opr.deliveryCode = deliveryCode
function deliveryCodePhrase() {
if (deliveryCode.length) return `کد پیگیری مرسوله: ${deliveryCode}` + '\n'
else return ''
}
smsMessage = [
' نماینده گرامی درخواست قطعه داغی شما با کد پیگیری ',
opr.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' تحویل شد. ',
'\n',
deliveryCodePhrase()
]
await sms.oldPieceRequest.delivered(opr.agent_id.mobile_number, opr.trackingCode, deliveryCode, thisTime)
}
await SMS([opr.agent_id.mobile_number], smsMessage.join(''))
await opr.save()
return res.json({ message: _faSr.response.success_save })
} catch (e) {
+5 -50
View File
@@ -9,7 +9,7 @@ const {
checkValidations,
generateRandomDigits
} = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module')
const sms = require('../plugins/SMS_Module')
const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController')
const _faSr = _sr.fa
@@ -18,10 +18,6 @@ function ArpaDateFormat(date) {
return moment(date).format('YYYY-MM-DD HH:mm:ss')
}
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
/// ///////////////// agent
module.exports.add_piece_request = [
async (req, res) => {
@@ -197,16 +193,7 @@ module.exports.change_pr_status_to_sent_by_agent = [
pr.trackingCode = trackingCode
pr.sendDate = ArpaDateFormat(thisTime)
// send sms for agent
const smsMsg = [
' نماینده گرامی درخواست قطعه شما در تاریخ ',
SmsDateFormat(thisTime),
' با کد پیگیری ',
trackingCode,
' برای شرکت ارسال شد. '
]
SMS([pr.agent_id.mobile_number], smsMsg.join(''))
await sms.pieceRequest.sent(pr.agent_id.mobile_number, trackingCode, thisTime)
await pr.save()
notifyAdmin('updateNewPieceRequests')
@@ -268,15 +255,7 @@ module.exports.get_one_pr_for_admin = [
pr.statusHistory.push({ status: 'ongoing', date: thisTime })
await pr.save()
const smsMsg = [
' نماینده گرامی درخواست قطعه شما با کد پیگیری ',
pr.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' در دست اقدام قرار گرفت. '
]
SMS([pr.agent_id.mobile_number], smsMsg.join(''))
await sms.pieceRequest.ongoing(pr.agent_id.mobile_number, pr.trackingCode, thisTime)
notifyAdmin('updateNewPieceRequests')
}
return res.json(pr)
@@ -318,38 +297,14 @@ module.exports.change_pr_status_by_admin = [
pr.status = status
pr.statusHistory.push({ status, date: thisTime })
let smsMessage
// differenet status methods
if (status === 'waiting') {
smsMessage = [
' نماینده گرامی درخواست قطعه شما با کد پیگیری ',
pr.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' در انتظار قطعه میباشد. '
]
await sms.pieceRequest.waiting(pr.agent_id.mobile_number, pr.trackingCode, thisTime)
}
if (status === 'delivered') {
if (deliveryCode) pr.deliveryCode = deliveryCode
function deliveryCodePhrase() {
if (deliveryCode.length) return `کد پیگیری مرسوله: ${deliveryCode}` + '\n'
else return ''
}
smsMessage = [
' نماینده گرامی درخواست قطعه شما با کد پیگیری ',
pr.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' تحویل شد. ',
'\n',
deliveryCodePhrase()
]
await sms.pieceRequest.delivered(pr.agent_id.mobile_number, pr.trackingCode, deliveryCode, thisTime)
}
await SMS([pr.agent_id.mobile_number], smsMessage.join(''))
await pr.save()
return res.json({ message: _faSr.response.success_save })
} catch (e) {
+17 -51
View File
@@ -4,8 +4,8 @@ const moment = require('moment-jalaali')
const Mongoose = require('mongoose')
const Representation = require('../models/Representation')
const User = require('../models/User')
const { SMS } = require('../plugins/SMS_Module')
const { phrases } = require('../plugins/SMS_Phrases')
const sms = require('../plugins/SMS_Module')
const { _sr } = require('../plugins/serverResponses')
const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController')
const {
@@ -26,10 +26,6 @@ const _faSr = _sr.fa
// return moment(date).format('YYYY-MM-DD HH:mm:ss')
// }
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
module.exports.add_representation = [
[
body('representation_type')
@@ -302,23 +298,9 @@ module.exports.add_representation = [
user.representation_code = representation_code
await user.save()
const smsMessage = [
' متقاضی گرامی درخواست شما با کد پیگیری ',
representation_code,
' در تاریخ ',
SmsDateFormat(Date.now()),
' در سامانه ثبت شد. ',
'\n',
' بعد از بررسی مدارک توسط کارشناسان نتیجه از طریق پیامک برای شما ارسال خواهد شد، همچنین میتوانید با کد پیگیری از طریق نشانی زیر وضعیت درخواست خود را بررسی کند. ',
'\n',
'https://asan-service.com/representation',
'\n',
phrases.signature
]
const responseMsg = ['درخواست شما باموفقیت ثبت شد.', '\n', ' کد پیگیری: ', representation_code]
SMS([mobile_number], smsMessage.join(''))
await sms.representation.submitted(mobile_number, representation_code, Date.now())
notifyAdmin('updateNewRepresentations')
return res.json({ message: responseMsg.join('') })
} catch (e) {
@@ -610,16 +592,12 @@ module.exports.getOne = [
if (representation.status === 'registered') {
representation.status = 'ongoing'
await representation.save()
const smsMsg = [
' متقاصی گرامی درخواست شما برای اخذ نمایندگی آسان سرویس به کد پیگیری ',
await sms.representation.underReview(
representation.mobile_number,
representation.representation_code,
' مورخ ',
SmsDateFormat(Date.now()),
' توسط کارشناسان آسان سرویس مشاهده و مورد بررسی قرار گرفت. ',
'\n',
phrases.signature
]
SMS([representation.mobile_number], smsMsg.join(''))
Date.now()
)
notifyAdmin('updateNewRepresentations')
return res.json(representation)
} else return res.json(representation)
@@ -683,14 +661,11 @@ module.exports.change_form_status = [
if (status === 'uploadOn') {
representation.upload = true
await representation.save()
const smsMsg = [
' متقاصی گرامی دسرسی آپلود مدارک برای درخواست ',
await sms.representation.uploadAccess(
representation.mobile_number,
representation.representation_code,
' ایجاد شد، لطفا هرچه سریع تر نسبت به آپلود مدارک خود اقدام کنید. ',
'\n',
phrases.signature
]
SMS([representation.mobile_number], smsMsg.join(''))
Date.now()
)
return res.json({ message: 'وضعیت جدید در سیستم ثبت شد و پیامک اطلاع رسانی برای متقاضی ارسال شد' })
}
if (status === 'uploadOff') {
@@ -702,12 +677,7 @@ module.exports.change_form_status = [
if (status === 'editAccessOn') {
representation.editAccess = true
await representation.save()
const smsMsg = [
' نماینده گرامی دسرسی ویرایش اطلاعات نمایندگی برای شما ایجاد شد، لطفا هرچه سریع تر نسبت به ویرایش اطلاعات خود اقدام کنید.',
'\n',
phrases.signature
]
SMS([representation.mobile_number], smsMsg.join(''))
await sms.representation.editAccess(representation.mobile_number, Date.now())
return res.json({ message: 'وضعیت جدید در سیستم ثبت شد و پیامک اطلاع رسانی برای متقاضی ارسال شد' })
}
if (status === 'editAccessOff') {
@@ -763,16 +733,12 @@ module.exports.change_form_status = [
else return ' مورد قبول قرار گرفت. برای ادامه ی فرایند از طرف شرکت با شما تماس گرفته خواهد شد. '
}
const smsMsg = [
' متقاصی گرامی درخواست شما برای اخذ نمایندگی آسان سرویس به کد پیگیری ',
await sms.representation.statusUpdate(
representation.mobile_number,
representation.representation_code,
' مورخ ',
SmsDateFormat(Date.now()),
statusToPhrase(),
'\n',
phrases.signature
]
SMS([representation.mobile_number], smsMsg.join(''))
Date.now()
)
return res.json({ message: 'وضعیت جدید در سیستم ثبت شد و پیامک اطلاع رسانی برای متقاضی ارسال شد' })
} catch (e) {
return res404(res, `there is an error here --- ${e}`)
+3 -4
View File
@@ -2,7 +2,7 @@ const { body, validationResult } = require('express-validator')
const SMSBroadcast = require('../models/SMSBroadcast')
const { _sr } = require('../plugins/serverResponses')
const { res500, checkValidations } = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module')
const sms = require('../plugins/SMS_Module')
const _faSr = _sr.fa
module.exports.broadcast = [
@@ -19,9 +19,8 @@ module.exports.broadcast = [
const data = { message, recievers, _creator: user_id }
const smsBroadcast = new SMSBroadcast(data)
await smsBroadcast.save()
for await (const item of recievers) {
await SMS([item.mobile_number], message)
}
const mobileNumbers = recievers.map(item => item.mobile_number)
await sms.broadcast(mobileNumbers, message)
return res.json({ message: 'پیامک برای همه مخاطبین ارسال گردید' })
} catch (e) {
return res500(res, e)
+22 -53
View File
@@ -2,8 +2,7 @@ const { body, validationResult } = require('express-validator')
const User = require('../models/User')
const SurveyCheck = require('../models/SurveyCheck')
const { res406, res500, checkValidations } = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module')
const { phrases } = require('../plugins/SMS_Phrases')
const sms = require('../plugins/SMS_Module')
module.exports.reception = [
[
@@ -19,23 +18,13 @@ module.exports.reception = [
const user = await User.findOne({ $or: [{ verity_businessID: BusinessID }, { panatech_businessID: BusinessID }] })
if (!user) return res406(res, 'Incorrect BusinessID')
function getMessageTxt() {
const msgArray = [
'مشتری گرامی',
user.first_name + ' ' + user.last_name,
'\n',
'کالاهای شما با شماره پذیرش موقت',
TempReceiptTransNumber,
'توسط واحد گارانتی آسان سرویس دریافت شد و با شماره پذیرش دائم',
ItemReceptionTransNumber,
'دردست بررسی می باشد. به محض آماده شدن کالاها به شما اطلاع رسانی خواهد شد.',
'\n',
phrases.signature
]
return msgArray.join(' ')
}
SMS([user.mobile_number], getMessageTxt())
await sms.warranty.reception(
user.mobile_number,
user.first_name + ' ' + user.last_name,
TempReceiptTransNumber,
ItemReceptionTransNumber,
Date.now()
)
return res.json({ message: 'Message sent successfully' })
} catch (e) {
return res500(res, e)
@@ -57,23 +46,13 @@ module.exports.repair = [
const user = await User.findOne({ $or: [{ verity_businessID: BusinessID }, { panatech_businessID: BusinessID }] })
if (!user) return res406(res, 'Incorrect BusinessID')
function getMessageTxt() {
const msgArray = [
'مشتری گرامی',
user.first_name + ' ' + user.last_name,
'\n',
'مراحل تعمیر و بررسی کالاهای ارسالی شما با شماره پذیرش',
ItemReceptionTransNumber,
'توسط واحد گارانتی آسان سرویس انجام شد و با شماره فاکتور گارانتی',
TransNumber,
'ثبت شد. به زودی کالاها به آدرس شما ارسال می گردد. ',
'\n',
phrases.signature
]
return msgArray.join(' ')
}
SMS([user.mobile_number], getMessageTxt())
await sms.warranty.repairCompleted(
user.mobile_number,
user.first_name + ' ' + user.last_name,
ItemReceptionTransNumber,
TransNumber,
Date.now()
)
return res.json({ message: 'Message sent successfully' })
} catch (e) {
return res500(res, e)
@@ -95,22 +74,6 @@ module.exports.sendBack = [
const user = await User.findOne({ $or: [{ verity_businessID: BusinessID }, { panatech_businessID: BusinessID }] })
if (!user) return res406(res, 'Incorrect BusinessID')
function getMessageTxt() {
const msgArray = [
'مشتری گرامی',
user.first_name + ' ' + user.last_name,
'\n',
'کالاهای ارسالی شما با شماره پذیرش',
ItemReceptionTransNumber,
'پس از انجام مراحل گارانتی توسط واحد گارانتی به آدرس شما ارسال شد. شماره بیجک بسته ارسالی',
DeliveryCode,
'می باشد. از همراهی و خرید شما سپاس گزاریم. ',
'\n',
phrases.signature
]
return msgArray.join(' ')
}
const surveyData = {
code: ItemReceptionTransNumber,
user: user._id,
@@ -121,7 +84,13 @@ module.exports.sendBack = [
if (err) console.log('surveyCheck save error', err)
})
SMS([user.mobile_number], getMessageTxt())
await sms.warranty.sendback(
user.mobile_number,
user.first_name + ' ' + user.last_name,
ItemReceptionTransNumber,
DeliveryCode,
Date.now()
)
return res.json({ message: 'Message sent successfully' })
} catch (e) {
return res500(res, e)
+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 })
+10 -15
View File
@@ -7,7 +7,7 @@ const User = require('../models/User')
const { secretKey } = require('../authentication')
const permissions = require('../plugins/permissions')
const { _sr } = require('../plugins/serverResponses')
const { SMS } = require('../plugins/SMS_Module')
const sms = require('../plugins/SMS_Module')
const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController')
const { saveUserToArpa, updateUserOnArpa } = require('../ArpaWebservice.js')
const {
@@ -98,13 +98,7 @@ function sendConfirmationSMS(userId) {
user.mobileConfirmationKey = mobileKey
await user.save()
// const smsMsg = [
// 'این شماره در وبسایت آسان سرویس جهت ارائه خدمات گارانتی ثبت گردیده.',
// ' کد تایید شماره همراه: ',
// mobileKey
// ]
await SMS(user.mobile_number, mobileKey)
await sms.auth.mobileVerificationCode(user.mobile_number, mobileKey, new Date())
resolve()
} catch (err) {
@@ -676,10 +670,12 @@ module.exports.generate_reset_user_password_link = [
if (type === 'email') query.email = email.toLowerCase().trim()
if (type === 'mobile') query.mobile_number = normalizeMobileNumber(mobile)
console.log('queryyyy', query)
const user = await User.findOne(query)
if (!user) throw new Error('err')
const resetPassKey = await crypto.randomBytes(20).toString('hex')
const resetPassKey = crypto.randomBytes(5).toString('hex')
user.resetPassToken = resetPassKey
const hostURL = 'www.asan-service.com'
@@ -715,11 +711,10 @@ module.exports.generate_reset_user_password_link = [
html: emailHTMLTemplate
})
} else {
const smsMsg = [
' لینک بازیابی کلمه عبور آسان سرویس: ',
`https://${hostURL}/auth/resetpass-newpass/${resetPassKey}`
]
await SMS([user.mobile_number], smsMsg.join(''))
// const resetLink = `asan-service.com/auth/resetpass-newpass/${resetPassKey}`
const resetLink = `${resetPassKey}`
console.log(resetLink)
await sms.auth.passwordReset(user.mobile_number, resetLink, new Date())
}
await user.save()
@@ -730,7 +725,7 @@ module.exports.generate_reset_user_password_link = [
return res.json({ message: responseMsg })
} catch (err) {
let errMsg = _faSr.not_found.user_id
if (err.code === 'EENVELOPE') errMsg = 'مشکلی در ارسال ایمیل پیش آمد لطفا دوباره تلاش کنید'
if (err.code === 'EENVELOPE' || err.code === 400) errMsg = 'مشکلی در ارسال ایمیل پیش آمد لطفا دوباره تلاش کنید'
return res404(res, errMsg)
}
}
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()
}