Files
hamid.zarghami1@gmail.com e644edbd65 transfer project in github
2024-05-12 15:29:27 +03:30

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)
}
}
]