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 { _sr } = require('../plugins/serverResponses')
const { checkValidations } = require('../plugins/controllersHelperFunctions') const { checkValidations } = require('../plugins/controllersHelperFunctions')
const UserGPS = require('../models/GPS.User') const UserGPS = require('../models/GPS.User')
const { generateRandomDigits const { generateRandomDigits } = require('../plugins/controllersHelperFunctions')
} = require('../plugins/controllersHelperFunctions') const sms = require('../plugins/SMS_Module')
const { SMS } = require('../plugins/SMS_Module')
module.exports.login_with_pass = [ module.exports.login_with_pass = [
[ [
body('username') body('username')
@@ -56,7 +55,7 @@ module.exports.login_with_pass = [
}) })
// eslint-disable-next-line eqeqeq // eslint-disable-next-line eqeqeq
if (user?.lastIP && user?.lastIP != req.ip) { 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.lastIP = req.ip
user.token = token user.token = token
@@ -72,12 +71,8 @@ module.exports.login_with_pass = [
module.exports.login_with_otp = [ module.exports.login_with_otp = [
[ [
body('mobile_number') body('mobile_number').notEmpty().withMessage(_sr.fa.required.phone_number),
.notEmpty() body('otp').notEmpty().withMessage(_sr.fa.required.phone_number)
.withMessage(_sr.fa.required.phone_number),
body('otp')
.notEmpty()
.withMessage(_sr.fa.required.phone_number)
], ],
checkValidations(validationResult), checkValidations(validationResult),
async (req, res) => { async (req, res) => {
@@ -85,7 +80,7 @@ module.exports.login_with_otp = [
const { mobile_number, otp } = req.body const { mobile_number, otp } = req.body
const user = await UserGPS.findOne({ mobile_number }) const user = await UserGPS.findOne({ mobile_number })
if (!user) throw new Error(_sr.fa.not_found.user_id) 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.otp === otp) {
if (!user.active) { if (!user.active) {
throw new Error('حساب شما هنوز تاییده نشده است') throw new Error('حساب شما هنوز تاییده نشده است')
@@ -95,21 +90,18 @@ module.exports.login_with_otp = [
}) })
// eslint-disable-next-line eqeqeq // eslint-disable-next-line eqeqeq
if (user?.lastIP && user?.lastIP != req.ip) { 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.otp = generateRandomDigits(6)
user.lastIP = req.ip user.lastIP = req.ip
user.token = token user.token = token
user.save() user.save()
return res.status(200).json({ token }) return res.status(200).json({ token })
} }
} catch (err) { } catch (err) {
return res.status(422).json({ return res.status(422).json({
validation: { otp: { msg: err.message } } 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 uid = require('uuid')
const User = require('../models/GPS.User') const User = require('../models/GPS.User')
const { _sr } = require('../plugins/serverResponses') const { _sr } = require('../plugins/serverResponses')
const { SMS } = require('../plugins/SMS_Module') const sms = require('../plugins/SMS_Module')
const { const {
res500, res500,
checkValidations, checkValidations,
@@ -29,9 +29,7 @@ function sendConfirmationSMS(userId) {
user.otp = mobileKey user.otp = mobileKey
await user.save() await user.save()
const smsMsg = ['این شماره در وبسایت آسان سرویس ثبت گردیده.', ' کد تایید شماره همراه: ', mobileKey] await sms.auth.mobileVerificationCode(user.mobile_number, mobileKey, new Date())
await SMS([user.mobile_number], smsMsg.join(''))
resolve() resolve()
} catch (err) { } catch (err) {
+6 -49
View File
@@ -9,7 +9,7 @@ const {
checkValidations, checkValidations,
generateRandomDigits generateRandomDigits
} = require('../plugins/controllersHelperFunctions') } = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module') const sms = require('../plugins/SMS_Module')
// const { phrases } = require('../plugins/SMS_Phrases') // const { phrases } = require('../plugins/SMS_Phrases')
// const { notifyAgent } = require('../WebSocket/controllers/agent_EventsController') // const { notifyAgent } = require('../WebSocket/controllers/agent_EventsController')
const { notifyAdmin } = require('../WebSocket/controllers/admin_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') return moment(date).format('YYYY-MM-DD HH:mm:ss')
} }
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
/// ///////////////// agent /// ///////////////// agent
module.exports.add_buffer_request = [ module.exports.add_buffer_request = [
async (req, res) => { async (req, res) => {
@@ -172,15 +168,7 @@ module.exports.change_br_status_to_sent_by_agent = [
br.sendDate = ArpaDateFormat(thisTime) br.sendDate = ArpaDateFormat(thisTime)
// send sms for agent // send sms for agent
const smsMsg = [ await sms.bufferRequest.sent(br.agent_id.mobile_number, trackingCode, thisTime)
' نماینده گرامی درخواست کالای بافر شما در تاریخ ',
SmsDateFormat(thisTime),
' با کد پیگیری ',
trackingCode,
' برای شرکت ارسال شد. '
]
SMS([br.agent_id.mobile_number], smsMsg.join(''))
await br.save() await br.save()
notifyAdmin('updateNewBufferRequests') notifyAdmin('updateNewBufferRequests')
@@ -244,15 +232,7 @@ module.exports.get_one_br_for_admin = [
br.statusHistory.push({ status: 'ongoing', date: thisTime }) br.statusHistory.push({ status: 'ongoing', date: thisTime })
await br.save() await br.save()
const smsMsg = [ await sms.bufferRequest.ongoing(br.agent_id.mobile_number, br.trackingCode, thisTime)
' نماینده گرامی درخواست کالای بافر شما با کد پیگیری ',
br.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' در دست اقدام قرار گرفت. '
]
SMS([br.agent_id.mobile_number], smsMsg.join(''))
notifyAdmin('updateNewBufferRequests') notifyAdmin('updateNewBufferRequests')
} }
return res.json(br) return res.json(br)
@@ -294,38 +274,15 @@ module.exports.change_br_status_by_admin = [
br.status = status br.status = status
br.statusHistory.push({ status, date: thisTime }) br.statusHistory.push({ status, date: thisTime })
let smsMessage // different status methods
// differenet status methods
if (status === 'waiting') { if (status === 'waiting') {
smsMessage = [ await sms.bufferRequest.waiting(br.agent_id.mobile_number, br.trackingCode, thisTime)
' نماینده گرامی درخواست کالای بافر شما با کد پیگیری ',
br.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' در انتظار قطعه میباشد. '
]
} }
if (status === 'delivered') { if (status === 'delivered') {
if (deliveryCode) br.deliveryCode = deliveryCode if (deliveryCode) br.deliveryCode = deliveryCode
await sms.bufferRequest.delivered(br.agent_id.mobile_number, br.trackingCode, deliveryCode, thisTime)
function deliveryCodePhrase() {
if (deliveryCode.length) return `کد پیگیری مرسوله: ${deliveryCode}` + '\n'
else return ''
}
smsMessage = [
' نماینده گرامی درخواست کالای بافر شما با کد پیگیری ',
br.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' تحویل شد. ',
'\n',
deliveryCodePhrase()
]
} }
await SMS([br.agent_id.mobile_number], smsMessage.join(''))
await br.save() await br.save()
return res.json({ message: _faSr.response.success_save }) return res.json({ message: _faSr.response.success_save })
} catch (e) { } catch (e) {
@@ -9,7 +9,7 @@ const {
checkValidations, checkValidations,
generateRandomDigits generateRandomDigits
} = require('../plugins/controllersHelperFunctions') } = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module') const sms = require('../plugins/SMS_Module')
const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController') const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController')
const _faSr = _sr.fa const _faSr = _sr.fa
@@ -18,10 +18,6 @@ function ArpaDateFormat(date) {
return moment(date).format('YYYY-MM-DD HH:mm:ss') return moment(date).format('YYYY-MM-DD HH:mm:ss')
} }
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
/// ///////////////// agent /// ///////////////// agent
module.exports.add_guaranteeReport = [ module.exports.add_guaranteeReport = [
async (req, res) => { async (req, res) => {
@@ -201,15 +197,7 @@ module.exports.change_gr_status_to_sent_by_agent = [
gr.sendDate = ArpaDateFormat(thisTime) gr.sendDate = ArpaDateFormat(thisTime)
// send sms for agent // send sms for agent
const smsMsg = [ await sms.guaranteeReport.sent(gr.agent_id.mobile_number, trackingCode, thisTime)
' نماینده گرامی فرم گزارش عملکرد گارانتی شما در تاریخ ',
SmsDateFormat(thisTime),
' با کد پیگیری ',
trackingCode,
' برای شرکت ارسال شد. '
]
SMS([gr.agent_id.mobile_number], smsMsg.join(''))
await gr.save() await gr.save()
notifyAdmin('updateNewGuaranteeReports') notifyAdmin('updateNewGuaranteeReports')
+2 -19
View File
@@ -14,17 +14,11 @@ const {
checkMobileNumber, checkMobileNumber,
normalizeMobileNumber normalizeMobileNumber
} = require('../plugins/controllersHelperFunctions') } = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module') const sms = require('../plugins/SMS_Module')
const { phrases } = require('../plugins/SMS_Phrases')
/// ///
const _faSr = _sr.fa const _faSr = _sr.fa
// date formaters
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
module.exports.addLottery = [ module.exports.addLottery = [
[ [
body('title').notEmpty().withMessage(_faSr.required.title), body('title').notEmpty().withMessage(_faSr.required.title),
@@ -338,18 +332,7 @@ module.exports.enrollParticipant = [
lottery.markModified('participants') lottery.markModified('participants')
await lottery.save() await lottery.save()
const msg = [ await sms.lottery.enrollment(normalizedMN, fullName, enrollCode, Date.now())
fullName,
' عزیز، اطلاعات شما در تاریخ ',
SmsDateFormat(Date.now()),
' برای شرکت در قرعه کشی آسان سرویس ثبت گردید. ',
'\n',
'کد پیگیری: ',
enrollCode,
'\n',
phrases.signature
]
SMS([normalizedMN], msg.join(''))
return res.json({ message: 'اطلاعات شما با موفیقت در سیستم ثبت شد. کد پیگیری به تلفن همراه شما ارسال گردید' }) return res.json({ message: 'اطلاعات شما با موفیقت در سیستم ثبت شد. کد پیگیری به تلفن همراه شما ارسال گردید' })
} catch (e) { } catch (e) {
return res500(res, `there is an error here --- ${e}`) return res500(res, `there is an error here --- ${e}`)
@@ -9,7 +9,7 @@ const {
checkValidations, checkValidations,
generateRandomDigits generateRandomDigits
} = require('../plugins/controllersHelperFunctions') } = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module') const sms = require('../plugins/SMS_Module')
const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController') const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController')
const _faSr = _sr.fa const _faSr = _sr.fa
@@ -18,10 +18,6 @@ function ArpaDateFormat(date) {
return moment(date).format('YYYY-MM-DD HH:mm:ss') return moment(date).format('YYYY-MM-DD HH:mm:ss')
} }
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
/// ///////////////// agent /// ///////////////// agent
module.exports.add_oldPiece_request = [ module.exports.add_oldPiece_request = [
async (req, res) => { async (req, res) => {
@@ -177,15 +173,7 @@ module.exports.change_opr_status_to_sent_by_agent = [
opr.sendDate = ArpaDateFormat(thisTime) opr.sendDate = ArpaDateFormat(thisTime)
// send sms for agent // send sms for agent
const smsMsg = [ await sms.oldPieceRequest.sent(opr.agent_id.mobile_number, trackingCode, thisTime)
' نماینده گرامی درخواست قطعه داغی شما در تاریخ ',
SmsDateFormat(thisTime),
' با کد پیگیری ',
trackingCode,
' برای شرکت ارسال شد. '
]
SMS([opr.agent_id.mobile_number], smsMsg.join(''))
await opr.save() await opr.save()
notifyAdmin('updateNewOldPieceRequests') notifyAdmin('updateNewOldPieceRequests')
@@ -247,15 +235,7 @@ module.exports.get_one_opr_for_admin = [
opr.statusHistory.push({ status: 'ongoing', date: thisTime }) opr.statusHistory.push({ status: 'ongoing', date: thisTime })
await opr.save() await opr.save()
const smsMsg = [ await sms.oldPieceRequest.ongoing(opr.agent_id.mobile_number, opr.trackingCode, thisTime)
' نماینده گرامی درخواست قطعه داغی شما با کد پیگیری ',
opr.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' در دست اقدام قرار گرفت. '
]
SMS([opr.agent_id.mobile_number], smsMsg.join(''))
notifyAdmin('updateNewOldPieceRequests') notifyAdmin('updateNewOldPieceRequests')
} }
return res.json(opr) return res.json(opr)
@@ -297,38 +277,15 @@ module.exports.change_opr_status_by_admin = [
opr.status = status opr.status = status
opr.statusHistory.push({ status, date: thisTime }) opr.statusHistory.push({ status, date: thisTime })
let smsMessage // different status methods
// differenet status methods
if (status === 'waiting') { if (status === 'waiting') {
smsMessage = [ await sms.oldPieceRequest.waiting(opr.agent_id.mobile_number, opr.trackingCode, thisTime)
' نماینده گرامی درخواست قطعه داغی شما با کد پیگیری ',
opr.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' در انتظار قطعه میباشد. '
]
} }
if (status === 'delivered') { if (status === 'delivered') {
if (deliveryCode) opr.deliveryCode = deliveryCode if (deliveryCode) opr.deliveryCode = deliveryCode
await sms.oldPieceRequest.delivered(opr.agent_id.mobile_number, opr.trackingCode, deliveryCode, thisTime)
function deliveryCodePhrase() {
if (deliveryCode.length) return `کد پیگیری مرسوله: ${deliveryCode}` + '\n'
else return ''
}
smsMessage = [
' نماینده گرامی درخواست قطعه داغی شما با کد پیگیری ',
opr.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' تحویل شد. ',
'\n',
deliveryCodePhrase()
]
} }
await SMS([opr.agent_id.mobile_number], smsMessage.join(''))
await opr.save() await opr.save()
return res.json({ message: _faSr.response.success_save }) return res.json({ message: _faSr.response.success_save })
} catch (e) { } catch (e) {
+5 -50
View File
@@ -9,7 +9,7 @@ const {
checkValidations, checkValidations,
generateRandomDigits generateRandomDigits
} = require('../plugins/controllersHelperFunctions') } = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module') const sms = require('../plugins/SMS_Module')
const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController') const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController')
const _faSr = _sr.fa const _faSr = _sr.fa
@@ -18,10 +18,6 @@ function ArpaDateFormat(date) {
return moment(date).format('YYYY-MM-DD HH:mm:ss') return moment(date).format('YYYY-MM-DD HH:mm:ss')
} }
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
/// ///////////////// agent /// ///////////////// agent
module.exports.add_piece_request = [ module.exports.add_piece_request = [
async (req, res) => { async (req, res) => {
@@ -197,16 +193,7 @@ module.exports.change_pr_status_to_sent_by_agent = [
pr.trackingCode = trackingCode pr.trackingCode = trackingCode
pr.sendDate = ArpaDateFormat(thisTime) pr.sendDate = ArpaDateFormat(thisTime)
// send sms for agent await sms.pieceRequest.sent(pr.agent_id.mobile_number, trackingCode, thisTime)
const smsMsg = [
' نماینده گرامی درخواست قطعه شما در تاریخ ',
SmsDateFormat(thisTime),
' با کد پیگیری ',
trackingCode,
' برای شرکت ارسال شد. '
]
SMS([pr.agent_id.mobile_number], smsMsg.join(''))
await pr.save() await pr.save()
notifyAdmin('updateNewPieceRequests') notifyAdmin('updateNewPieceRequests')
@@ -268,15 +255,7 @@ module.exports.get_one_pr_for_admin = [
pr.statusHistory.push({ status: 'ongoing', date: thisTime }) pr.statusHistory.push({ status: 'ongoing', date: thisTime })
await pr.save() await pr.save()
const smsMsg = [ await sms.pieceRequest.ongoing(pr.agent_id.mobile_number, pr.trackingCode, thisTime)
' نماینده گرامی درخواست قطعه شما با کد پیگیری ',
pr.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' در دست اقدام قرار گرفت. '
]
SMS([pr.agent_id.mobile_number], smsMsg.join(''))
notifyAdmin('updateNewPieceRequests') notifyAdmin('updateNewPieceRequests')
} }
return res.json(pr) return res.json(pr)
@@ -318,38 +297,14 @@ module.exports.change_pr_status_by_admin = [
pr.status = status pr.status = status
pr.statusHistory.push({ status, date: thisTime }) pr.statusHistory.push({ status, date: thisTime })
let smsMessage
// differenet status methods
if (status === 'waiting') { if (status === 'waiting') {
smsMessage = [ await sms.pieceRequest.waiting(pr.agent_id.mobile_number, pr.trackingCode, thisTime)
' نماینده گرامی درخواست قطعه شما با کد پیگیری ',
pr.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' در انتظار قطعه میباشد. '
]
} }
if (status === 'delivered') { if (status === 'delivered') {
if (deliveryCode) pr.deliveryCode = deliveryCode if (deliveryCode) pr.deliveryCode = deliveryCode
await sms.pieceRequest.delivered(pr.agent_id.mobile_number, pr.trackingCode, deliveryCode, thisTime)
function deliveryCodePhrase() {
if (deliveryCode.length) return `کد پیگیری مرسوله: ${deliveryCode}` + '\n'
else return ''
}
smsMessage = [
' نماینده گرامی درخواست قطعه شما با کد پیگیری ',
pr.trackingCode,
' در تاریخ ',
SmsDateFormat(thisTime),
' تحویل شد. ',
'\n',
deliveryCodePhrase()
]
} }
await SMS([pr.agent_id.mobile_number], smsMessage.join(''))
await pr.save() await pr.save()
return res.json({ message: _faSr.response.success_save }) return res.json({ message: _faSr.response.success_save })
} catch (e) { } catch (e) {
+17 -51
View File
@@ -4,8 +4,8 @@ const moment = require('moment-jalaali')
const Mongoose = require('mongoose') const Mongoose = require('mongoose')
const Representation = require('../models/Representation') const Representation = require('../models/Representation')
const User = require('../models/User') const User = require('../models/User')
const { SMS } = require('../plugins/SMS_Module') const sms = require('../plugins/SMS_Module')
const { phrases } = require('../plugins/SMS_Phrases')
const { _sr } = require('../plugins/serverResponses') const { _sr } = require('../plugins/serverResponses')
const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController') const { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController')
const { const {
@@ -26,10 +26,6 @@ const _faSr = _sr.fa
// return moment(date).format('YYYY-MM-DD HH:mm:ss') // return moment(date).format('YYYY-MM-DD HH:mm:ss')
// } // }
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
module.exports.add_representation = [ module.exports.add_representation = [
[ [
body('representation_type') body('representation_type')
@@ -302,23 +298,9 @@ module.exports.add_representation = [
user.representation_code = representation_code user.representation_code = representation_code
await user.save() 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] const responseMsg = ['درخواست شما باموفقیت ثبت شد.', '\n', ' کد پیگیری: ', representation_code]
SMS([mobile_number], smsMessage.join('')) await sms.representation.submitted(mobile_number, representation_code, Date.now())
notifyAdmin('updateNewRepresentations') notifyAdmin('updateNewRepresentations')
return res.json({ message: responseMsg.join('') }) return res.json({ message: responseMsg.join('') })
} catch (e) { } catch (e) {
@@ -610,16 +592,12 @@ module.exports.getOne = [
if (representation.status === 'registered') { if (representation.status === 'registered') {
representation.status = 'ongoing' representation.status = 'ongoing'
await representation.save() await representation.save()
const smsMsg = [
' متقاصی گرامی درخواست شما برای اخذ نمایندگی آسان سرویس به کد پیگیری ', await sms.representation.underReview(
representation.mobile_number,
representation.representation_code, representation.representation_code,
' مورخ ', Date.now()
SmsDateFormat(Date.now()), )
' توسط کارشناسان آسان سرویس مشاهده و مورد بررسی قرار گرفت. ',
'\n',
phrases.signature
]
SMS([representation.mobile_number], smsMsg.join(''))
notifyAdmin('updateNewRepresentations') notifyAdmin('updateNewRepresentations')
return res.json(representation) return res.json(representation)
} else return res.json(representation) } else return res.json(representation)
@@ -683,14 +661,11 @@ module.exports.change_form_status = [
if (status === 'uploadOn') { if (status === 'uploadOn') {
representation.upload = true representation.upload = true
await representation.save() await representation.save()
const smsMsg = [ await sms.representation.uploadAccess(
' متقاصی گرامی دسرسی آپلود مدارک برای درخواست ', representation.mobile_number,
representation.representation_code, representation.representation_code,
' ایجاد شد، لطفا هرچه سریع تر نسبت به آپلود مدارک خود اقدام کنید. ', Date.now()
'\n', )
phrases.signature
]
SMS([representation.mobile_number], smsMsg.join(''))
return res.json({ message: 'وضعیت جدید در سیستم ثبت شد و پیامک اطلاع رسانی برای متقاضی ارسال شد' }) return res.json({ message: 'وضعیت جدید در سیستم ثبت شد و پیامک اطلاع رسانی برای متقاضی ارسال شد' })
} }
if (status === 'uploadOff') { if (status === 'uploadOff') {
@@ -702,12 +677,7 @@ module.exports.change_form_status = [
if (status === 'editAccessOn') { if (status === 'editAccessOn') {
representation.editAccess = true representation.editAccess = true
await representation.save() await representation.save()
const smsMsg = [ await sms.representation.editAccess(representation.mobile_number, Date.now())
' نماینده گرامی دسرسی ویرایش اطلاعات نمایندگی برای شما ایجاد شد، لطفا هرچه سریع تر نسبت به ویرایش اطلاعات خود اقدام کنید.',
'\n',
phrases.signature
]
SMS([representation.mobile_number], smsMsg.join(''))
return res.json({ message: 'وضعیت جدید در سیستم ثبت شد و پیامک اطلاع رسانی برای متقاضی ارسال شد' }) return res.json({ message: 'وضعیت جدید در سیستم ثبت شد و پیامک اطلاع رسانی برای متقاضی ارسال شد' })
} }
if (status === 'editAccessOff') { if (status === 'editAccessOff') {
@@ -763,16 +733,12 @@ module.exports.change_form_status = [
else return ' مورد قبول قرار گرفت. برای ادامه ی فرایند از طرف شرکت با شما تماس گرفته خواهد شد. ' else return ' مورد قبول قرار گرفت. برای ادامه ی فرایند از طرف شرکت با شما تماس گرفته خواهد شد. '
} }
const smsMsg = [ await sms.representation.statusUpdate(
' متقاصی گرامی درخواست شما برای اخذ نمایندگی آسان سرویس به کد پیگیری ', representation.mobile_number,
representation.representation_code, representation.representation_code,
' مورخ ',
SmsDateFormat(Date.now()),
statusToPhrase(), statusToPhrase(),
'\n', Date.now()
phrases.signature )
]
SMS([representation.mobile_number], smsMsg.join(''))
return res.json({ message: 'وضعیت جدید در سیستم ثبت شد و پیامک اطلاع رسانی برای متقاضی ارسال شد' }) return res.json({ message: 'وضعیت جدید در سیستم ثبت شد و پیامک اطلاع رسانی برای متقاضی ارسال شد' })
} catch (e) { } catch (e) {
return res404(res, `there is an error here --- ${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 SMSBroadcast = require('../models/SMSBroadcast')
const { _sr } = require('../plugins/serverResponses') const { _sr } = require('../plugins/serverResponses')
const { res500, checkValidations } = require('../plugins/controllersHelperFunctions') const { res500, checkValidations } = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module') const sms = require('../plugins/SMS_Module')
const _faSr = _sr.fa const _faSr = _sr.fa
module.exports.broadcast = [ module.exports.broadcast = [
@@ -19,9 +19,8 @@ module.exports.broadcast = [
const data = { message, recievers, _creator: user_id } const data = { message, recievers, _creator: user_id }
const smsBroadcast = new SMSBroadcast(data) const smsBroadcast = new SMSBroadcast(data)
await smsBroadcast.save() await smsBroadcast.save()
for await (const item of recievers) { const mobileNumbers = recievers.map(item => item.mobile_number)
await SMS([item.mobile_number], message) await sms.broadcast(mobileNumbers, message)
}
return res.json({ message: 'پیامک برای همه مخاطبین ارسال گردید' }) return res.json({ message: 'پیامک برای همه مخاطبین ارسال گردید' })
} catch (e) { } catch (e) {
return res500(res, 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 User = require('../models/User')
const SurveyCheck = require('../models/SurveyCheck') const SurveyCheck = require('../models/SurveyCheck')
const { res406, res500, checkValidations } = require('../plugins/controllersHelperFunctions') const { res406, res500, checkValidations } = require('../plugins/controllersHelperFunctions')
const { SMS } = require('../plugins/SMS_Module') const sms = require('../plugins/SMS_Module')
const { phrases } = require('../plugins/SMS_Phrases')
module.exports.reception = [ module.exports.reception = [
[ [
@@ -19,23 +18,13 @@ module.exports.reception = [
const user = await User.findOne({ $or: [{ verity_businessID: BusinessID }, { panatech_businessID: BusinessID }] }) const user = await User.findOne({ $or: [{ verity_businessID: BusinessID }, { panatech_businessID: BusinessID }] })
if (!user) return res406(res, 'Incorrect BusinessID') if (!user) return res406(res, 'Incorrect BusinessID')
function getMessageTxt() { await sms.warranty.reception(
const msgArray = [ user.mobile_number,
'مشتری گرامی', user.first_name + ' ' + user.last_name,
user.first_name + ' ' + user.last_name, TempReceiptTransNumber,
'\n', ItemReceptionTransNumber,
'کالاهای شما با شماره پذیرش موقت', Date.now()
TempReceiptTransNumber, )
'توسط واحد گارانتی آسان سرویس دریافت شد و با شماره پذیرش دائم',
ItemReceptionTransNumber,
'دردست بررسی می باشد. به محض آماده شدن کالاها به شما اطلاع رسانی خواهد شد.',
'\n',
phrases.signature
]
return msgArray.join(' ')
}
SMS([user.mobile_number], getMessageTxt())
return res.json({ message: 'Message sent successfully' }) return res.json({ message: 'Message sent successfully' })
} catch (e) { } catch (e) {
return res500(res, e) return res500(res, e)
@@ -57,23 +46,13 @@ module.exports.repair = [
const user = await User.findOne({ $or: [{ verity_businessID: BusinessID }, { panatech_businessID: BusinessID }] }) const user = await User.findOne({ $or: [{ verity_businessID: BusinessID }, { panatech_businessID: BusinessID }] })
if (!user) return res406(res, 'Incorrect BusinessID') if (!user) return res406(res, 'Incorrect BusinessID')
function getMessageTxt() { await sms.warranty.repairCompleted(
const msgArray = [ user.mobile_number,
'مشتری گرامی', user.first_name + ' ' + user.last_name,
user.first_name + ' ' + user.last_name, ItemReceptionTransNumber,
'\n', TransNumber,
'مراحل تعمیر و بررسی کالاهای ارسالی شما با شماره پذیرش', Date.now()
ItemReceptionTransNumber, )
'توسط واحد گارانتی آسان سرویس انجام شد و با شماره فاکتور گارانتی',
TransNumber,
'ثبت شد. به زودی کالاها به آدرس شما ارسال می گردد. ',
'\n',
phrases.signature
]
return msgArray.join(' ')
}
SMS([user.mobile_number], getMessageTxt())
return res.json({ message: 'Message sent successfully' }) return res.json({ message: 'Message sent successfully' })
} catch (e) { } catch (e) {
return res500(res, e) return res500(res, e)
@@ -95,22 +74,6 @@ module.exports.sendBack = [
const user = await User.findOne({ $or: [{ verity_businessID: BusinessID }, { panatech_businessID: BusinessID }] }) const user = await User.findOne({ $or: [{ verity_businessID: BusinessID }, { panatech_businessID: BusinessID }] })
if (!user) return res406(res, 'Incorrect 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 = { const surveyData = {
code: ItemReceptionTransNumber, code: ItemReceptionTransNumber,
user: user._id, user: user._id,
@@ -121,7 +84,13 @@ module.exports.sendBack = [
if (err) console.log('surveyCheck save error', err) 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' }) return res.json({ message: 'Message sent successfully' })
} catch (e) { } catch (e) {
return res500(res, e) return res500(res, e)
+8 -69
View File
@@ -13,8 +13,7 @@ const {
checkValidations, checkValidations,
generateRandomDigits generateRandomDigits
} = require('../plugins/controllersHelperFunctions') } = 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 { notifyAgent } = require('../WebSocket/controllers/agent_EventsController')
const { notifyUser } = require('../WebSocket/controllers/user_EventsController') const { notifyUser } = require('../WebSocket/controllers/user_EventsController')
const _faSr = _sr.fa const _faSr = _sr.fa
@@ -24,10 +23,6 @@ function ArpaDateFormat(date) {
return moment(date).format('YYYY-MM-DD HH:mm:ss') return moment(date).format('YYYY-MM-DD HH:mm:ss')
} }
function SmsDateFormat(date) {
return moment(date).format('jYYYY/jMM/jDD')
}
/// ///////////////// users /// ///////////////// users
module.exports.add_transaction = [ module.exports.add_transaction = [
[ [
@@ -60,24 +55,10 @@ module.exports.add_transaction = [
if (user.isAgent && agent !== 'main') if (user.isAgent && agent !== 'main')
return res406(res, 'نمایندگان فقط میتوانند به خود شرکت آسان سرویس فرم ارسال نمایند') 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') { if (agent === 'main') {
const ArpaResponse = await saveTransactionToArpa(data, items, db_name) const ArpaResponse = await saveTransactionToArpa(data, items, db_name)
await TransactionDraft.findByIdAndRemove(draftId) await TransactionDraft.findByIdAndRemove(draftId)
SMS([user.mobile_number], getMessageTxt(ArpaResponse)) await sms.transaction.submitted(user.mobile_number, ArpaResponse, thisTime)
notifyUser('updateDraftsCount', userId) notifyUser('updateDraftsCount', userId)
return res.json({ return res.json({
host: 'ar', host: 'ar',
@@ -97,7 +78,7 @@ module.exports.add_transaction = [
const transaction = new Transaction(data) const transaction = new Transaction(data)
await transaction.save() await transaction.save()
await TransactionDraft.findByIdAndRemove(draftId) await TransactionDraft.findByIdAndRemove(draftId)
SMS([user.mobile_number], getMessageTxt(transaction.TempReceiptTransNumber)) await sms.transaction.submitted(user.mobile_number, transaction.TempReceiptTransNumber, thisTime)
notifyUser('updateDraftsCount', userId) notifyUser('updateDraftsCount', userId)
notifyAgent('newAgentInbox', agent) notifyAgent('newAgentInbox', agent)
notifyAgent('updateAgentInbox', agent) notifyAgent('updateAgentInbox', agent)
@@ -202,69 +183,27 @@ module.exports.change_transaction_status_by_agent = [
transaction.status = status transaction.status = status
transaction.statusHistory.push({ status, date: thisTime }) transaction.statusHistory.push({ status, date: thisTime })
let smsMessage
// different status methods // different status methods
if (status === 'recieved') { if (status === 'recieved') {
const receiptTN = transaction.TempReceiptTransNumber + 'R' + generateRandomDigits(2) const receiptTN = transaction.TempReceiptTransNumber + 'R' + generateRandomDigits(2)
transaction.ItemReceptionTransNumber = receiptTN transaction.ItemReceptionTransNumber = receiptTN
transaction.ItemReceptionTransDate = ArpaDateFormat(thisTime) transaction.ItemReceptionTransDate = ArpaDateFormat(thisTime)
smsMessage = [ await sms.transaction.received(transaction.cTel1, transaction.TempReceiptTransNumber, receiptTN, thisTime)
' کاربر گرامی فرم گارانتی شما با کد پذیرش موقت ',
transaction.TempReceiptTransNumber,
' در تاریخ ',
SmsDateFormat(thisTime),
' تحویل دفتر نمایندگی و پذیرش شد. ',
'\n',
' کد پذیرش: ',
receiptTN,
'\n',
phrases.signature
]
} }
if (status === 'ongoing') { if (status === 'ongoing') {
smsMessage = [ await sms.transaction.ongoing(transaction.cTel1, transaction.ItemReceptionTransNumber, thisTime)
' کاربر گرامی فرم گارانتی شما با کد پذیرش ',
transaction.ItemReceptionTransNumber,
' در تاریخ ',
SmsDateFormat(thisTime),
' در دست اقدام قرار گرفت. ',
'\n',
phrases.signature
]
} }
if (status === 'waiting') { if (status === 'waiting') {
smsMessage = [ await sms.transaction.waiting(transaction.cTel1, transaction.ItemReceptionTransNumber, thisTime)
' کاربر گرامی فرم گارانتی شما با کد پذیرش ',
transaction.ItemReceptionTransNumber,
' در تاریخ ',
SmsDateFormat(thisTime),
' در انتظار قطعه میباشد. ',
'\n',
phrases.signature
]
} }
if (status === 'delivered') { if (status === 'delivered') {
if (deliveryCode) transaction.deliveryCode = deliveryCode if (deliveryCode) transaction.deliveryCode = deliveryCode
function deliveryCodePhrase() { await sms.transaction.delivered(transaction.cTel1, transaction.ItemReceptionTransNumber, deliveryCode, thisTime)
if (deliveryCode.length) return `کد پیگیری مرسوله: ${deliveryCode}` + '\n'
else return ''
}
smsMessage = [
' کاربر گرامی فرم گارانتی شما با کد پذیرش ',
transaction.ItemReceptionTransNumber,
' در تاریخ ',
SmsDateFormat(thisTime),
' تحویل شد. ',
'\n',
deliveryCodePhrase(),
phrases.signature
]
const surveyData = { const surveyData = {
code: transaction.ItemReceptionTransNumber, 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() await transaction.save()
return res.json({ message: _faSr.response.success_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 { secretKey } = require('../authentication')
const permissions = require('../plugins/permissions') const permissions = require('../plugins/permissions')
const { _sr } = require('../plugins/serverResponses') 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 { notifyAdmin } = require('../WebSocket/controllers/admin_EventsController')
const { saveUserToArpa, updateUserOnArpa } = require('../ArpaWebservice.js') const { saveUserToArpa, updateUserOnArpa } = require('../ArpaWebservice.js')
const { const {
@@ -98,13 +98,7 @@ function sendConfirmationSMS(userId) {
user.mobileConfirmationKey = mobileKey user.mobileConfirmationKey = mobileKey
await user.save() await user.save()
// const smsMsg = [ await sms.auth.mobileVerificationCode(user.mobile_number, mobileKey, new Date())
// 'این شماره در وبسایت آسان سرویس جهت ارائه خدمات گارانتی ثبت گردیده.',
// ' کد تایید شماره همراه: ',
// mobileKey
// ]
await SMS(user.mobile_number, mobileKey)
resolve() resolve()
} catch (err) { } catch (err) {
@@ -676,10 +670,12 @@ module.exports.generate_reset_user_password_link = [
if (type === 'email') query.email = email.toLowerCase().trim() if (type === 'email') query.email = email.toLowerCase().trim()
if (type === 'mobile') query.mobile_number = normalizeMobileNumber(mobile) if (type === 'mobile') query.mobile_number = normalizeMobileNumber(mobile)
console.log('queryyyy', query)
const user = await User.findOne(query) const user = await User.findOne(query)
if (!user) throw new Error('err') if (!user) throw new Error('err')
const resetPassKey = await crypto.randomBytes(20).toString('hex') const resetPassKey = crypto.randomBytes(5).toString('hex')
user.resetPassToken = resetPassKey user.resetPassToken = resetPassKey
const hostURL = 'www.asan-service.com' const hostURL = 'www.asan-service.com'
@@ -715,11 +711,10 @@ module.exports.generate_reset_user_password_link = [
html: emailHTMLTemplate html: emailHTMLTemplate
}) })
} else { } else {
const smsMsg = [ // const resetLink = `asan-service.com/auth/resetpass-newpass/${resetPassKey}`
' لینک بازیابی کلمه عبور آسان سرویس: ', const resetLink = `${resetPassKey}`
`https://${hostURL}/auth/resetpass-newpass/${resetPassKey}` console.log(resetLink)
] await sms.auth.passwordReset(user.mobile_number, resetLink, new Date())
await SMS([user.mobile_number], smsMsg.join(''))
} }
await user.save() await user.save()
@@ -730,7 +725,7 @@ module.exports.generate_reset_user_password_link = [
return res.json({ message: responseMsg }) return res.json({ message: responseMsg })
} catch (err) { } catch (err) {
let errMsg = _faSr.not_found.user_id let errMsg = _faSr.not_found.user_id
if (err.code === 'EENVELOPE') errMsg = 'مشکلی در ارسال ایمیل پیش آمد لطفا دوباره تلاش کنید' if (err.code === 'EENVELOPE' || err.code === 400) errMsg = 'مشکلی در ارسال ایمیل پیش آمد لطفا دوباره تلاش کنید'
return res404(res, 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 Announcement = require('../models/Announcement')
const { saveUserToArpa, updateUserOnArpa } = require('../ArpaWebservice') const { saveUserToArpa, updateUserOnArpa } = require('../ArpaWebservice')
const { generateRandomDigitsInRangeOf } = require('./controllersHelperFunctions') const { generateRandomDigitsInRangeOf } = require('./controllersHelperFunctions')
const { SMS } = require('./SMS_Module') const sms = require('./SMS_Module')
const { phrases } = require('./SMS_Phrases') const { phrases } = require('./SMS_Phrases')
// eslint-disable-next-line import/order // eslint-disable-next-line import/order
const Cron = require("cron").CronJob; const Cron = require('cron').CronJob
/// /////// times /// /////// times
const minute = 1000 * 60 const minute = 1000 * 60
@@ -19,33 +19,32 @@ const day = hour * 24
/// /////// jobs /// /////// jobs
const job = new Cron("0 0 * * *", async () => { const job = new Cron('0 0 * * *', async () => {
console.log('✅ --job: check devices for activation is running') console.log('✅ --job: check devices for activation is running')
try { try {
const devices = await InstalledDevice.find({ const devices = await InstalledDevice.find({
$or: [ $or: [{ status: 0 }, { status: 2 }]
{ status: 0 }, })
{ status: 2 } .populate('userId', 'mobile_number')
] .populate('deviceId', 'model')
}).populate('userId', 'mobile_number').populate('deviceId', 'model')
for await (const device of devices) { for await (const device of devices) {
// item time and timeout // item time and timeout
const itemTime = Date.parse(device.created_at) const itemTime = Date.parse(device.created_at)
const timeout = itemTime + (day * 3) const timeout = itemTime + day * 3
if (Date.now() >= timeout && !device.check) { if (Date.now() >= timeout && !device.check) {
device.check = true; device.check = true
await device.save() 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) { } catch (e) {
console.log(e) console.log(e)
} }
}) })
const jobs = { const jobs = {
checkUserActivation() { checkUserActivation() {
@@ -179,7 +178,7 @@ const jobs = {
phrases.signature phrases.signature
] ]
SMS([item.mobile], msg.join('')) await sms.auth.sendOTP(item.mobile, msg.join(''))
} }
/// /////////////////////////////////////////////////////// fake data for tests /// /////////////////////////////////////////////////////// fake data for tests
@@ -227,7 +226,7 @@ const jobs = {
'\n', '\n',
`https://asan-service.com/account/survey?code=${item.code}` `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 item.smsSent = true
await item.save() await item.save()
} }