98 lines
2.6 KiB
JavaScript
98 lines
2.6 KiB
JavaScript
const User = require('./../models/User')
|
|
const {body, validationResult} = require('express-validator')
|
|
const {_sr} = require('../plugins/serverResponses')
|
|
const {sendSingle , sendMulti} = require('./../plugins/pushNotif').notification
|
|
const {res404, res500, checkValidations} = require('../plugins/controllersHelperFunctions')
|
|
|
|
|
|
module.exports.send = [
|
|
[
|
|
body('multi')
|
|
.notEmpty().withMessage(_sr['fa'].required.index)
|
|
.bail()
|
|
.isBoolean().withMessage(_sr['fa'].format.boolean),
|
|
|
|
body('title')
|
|
.notEmpty().withMessage(_sr['fa'].required.field),
|
|
|
|
body('body')
|
|
.notEmpty().withMessage(_sr['fa'].required.field),
|
|
|
|
body('user_id')
|
|
.if((value, {req})=>{
|
|
return req.body.user_id
|
|
})
|
|
.custom((value,{req})=>{
|
|
return User.findById(value)
|
|
.then(user => {
|
|
if (!user) return Promise.reject('کاربر وجود ندارد یا حذف شده است')
|
|
else return true
|
|
})
|
|
})
|
|
],
|
|
checkValidations(validationResult),
|
|
async (req, res) => {
|
|
try {
|
|
const {multi , user_id , title , body} = req.body
|
|
|
|
const objNotif = {
|
|
title,
|
|
body
|
|
}
|
|
|
|
if(multi){
|
|
const fcmTokens = []
|
|
const users = await User.find({scope: 'user'})
|
|
|
|
for (const user of users) {
|
|
if (user.fcmToken) fcmTokens.push(user.fcmToken)
|
|
}
|
|
|
|
const payload = {
|
|
notification: objNotif,
|
|
// data: {
|
|
// routeName: 'test',
|
|
// type: "bazaar",
|
|
// routeType: "viewBazaar",
|
|
// },
|
|
};
|
|
|
|
const input = {
|
|
registrationTokens: fcmTokens,
|
|
payload
|
|
}
|
|
|
|
const status = await sendMulti(input)
|
|
|
|
// if (!status) return res500(res , _sr['fa'].response.unknownError)
|
|
|
|
return res.json({message : 'با موفقیت ارسال شد'})
|
|
}else {
|
|
const user = await User.findById(user_id)
|
|
|
|
const payload = {
|
|
notification: objNotif,
|
|
// data: {
|
|
// routeName: 'test',
|
|
// type: "bazaar",
|
|
// routeType: "viewBazaar",
|
|
// },
|
|
};
|
|
|
|
const input = {
|
|
registrationTokens: user?.fcmToken || '',
|
|
payload
|
|
}
|
|
|
|
const status = await sendSingle(input)
|
|
|
|
// if (!status) return res500(res , _sr['fa'].response.unknownError)
|
|
|
|
return res.json({message : 'با موفقیت ارسال شد'})
|
|
}
|
|
}catch (error) {
|
|
return res500(res , _sr['fa'].response.unknownError)
|
|
}
|
|
}
|
|
]
|