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