decline from wallet if rejected

This commit is contained in:
morteza-mortezai
2025-12-01 22:50:09 +03:30
parent 8b65385bfe
commit 0d902aff1a
+49 -30
View File
@@ -1,8 +1,7 @@
const { body, param, validationResult } = require('express-validator')
const { checkValidations } = require('../plugins/controllersHelperFunctions')
const User = require('../models/GPS.User')
const InstalledDevice = require('../models/GPS.InstalledDevice')
const Device = require('../models/GPS.Device')
// const Device = require('../models/GPS.Device')
const userGPS = require('../models/GPS.User')
const Settings = require('../models/GPS.Settings')
const Score = require('../models/GPS.Score')
@@ -17,7 +16,7 @@ module.exports.deviceRegistration = [
const IMEI = req.body.IMEI
console.log('IMEI ******************', IMEI)
const existingInstalledDevice = await InstalledDevice.findOne({ IMEI }).catch(err => {
const existingInstalledDevice = await InstalledDevice.findOne({ IMEI, status: 1 }).catch(err => {
console.log('err in findOne InstalledDevice', err?.message)
return res.status(500).json({ msg: 'خطا در دریافت اطلاعات از دیتابیس ثبت دستگاه' })
})
@@ -217,45 +216,65 @@ module.exports.updateInstalled = [
],
checkValidations(validationResult),
async (req, res) => {
console.log('updateInstalled ******************', req.params.id, req.params.type)
const installedDevice = await InstalledDevice.findById(req.params.id)
if (!installedDevice) {
return res.status(404).json({ msg: 'این ایدی وجود ندارد' })
} else {
const user = await User.findById(installedDevice.userId).select('walletBalance score totalScore')
const device = await Device.findById(installedDevice.deviceId)
console.log('installedDevice ******************')
// const user = await User.findById(installedDevice.userId).select('walletBalance score totalScore')
switch (req.params.type) {
case 'accept': {
installedDevice.status = 1
installedDevice.installationDate = new Date()
device.status = 1
// case 'accept': {
// installedDevice.status = 1
// installedDevice.installationDate = new Date()
// // device.status = 1
user.walletBalance += device.profit
// user.dollarBalance += device.dollarProfit
user.totalScore += device.score
user.score += device.score
// // user.walletBalance += device.profit
// // user.dollarBalance += device.dollarProfit
// // user.totalScore += device.score
// // user.score += device.score
await Score.create({
title: 'ثبت دستگاه',
deviceId: device.id,
score: device.score,
userId: installedDevice.userId
})
user.save()
device.save()
installedDevice.save()
notifyAdmin('newInstallDeviceRequest')
// await Score.create({
// title: 'ثبت دستگاه',
// deviceId: device.id,
// score: device.score,
// userId: installedDevice.userId
// })
// user.save()
// device.save()
// installedDevice.save()
// notifyAdmin('newInstallDeviceRequest')
res.status(201).json({ msg: _sr.fa.response.success_save, data: installedDevice })
// res.status(201).json({ msg: _sr.fa.response.success_save, data: installedDevice })
break
}
// break
// }
case 'reject': {
console.log('reject ******************')
installedDevice.status = 2
installedDevice.save()
device.status = 0
device.save()
notifyAdmin('newInstallDeviceRequest')
await installedDevice.save()
console.log('installedDevice saved ******************')
// Get fee and score from Settings (same as during registration)
const fee = await Settings.findOne({ title: 'install_fee' })
const score = await Settings.findOne({ title: 'install_score' })
if (fee && score) {
// remove from wallet
await userGPS.findByIdAndUpdate(installedDevice.userId, {
$inc: {
walletBalance: -fee.amount,
score: -score.amount,
totalScore: -score.amount
}
})
console.log('userGPS updated ******************')
}
await Score.delete({ deviceId: installedDevice.id })
console.log('Score deleted ******************')
notifyAdmin('newInstallDeviceRequest', installedDevice.userId)
res.status(201).json({ msg: _sr.fa.response.success_save, data: installedDevice })
break