165 lines
5.3 KiB
JavaScript
165 lines
5.3 KiB
JavaScript
const User = require('../../models/User')
|
|
const ContactPageMessage = require('../../models/ContactPageMessage')
|
|
const TicketConversation = require('../../models/TicketConversation')
|
|
const Representation = require('../../models/Representation')
|
|
const PieceRequest = require('../../models/PieceRequest')
|
|
const OldPieceRequest = require('../../models/OldPieceRequest')
|
|
const BufferRequest = require('../../models/BufferRequest')
|
|
const GuaranteeReport = require('../../models/GuaranteeReport')
|
|
const Complaint = require('../../models/Complaint')
|
|
const Withdraw = require('../../models/GPS.Withdraw');
|
|
const UserGPS = require('../../models/GPS.User')
|
|
const AwardRequest = require('../../models/GPS.AwardRequest');
|
|
const InstalledDevice = require('../../models/GPS.InstalledDevice');
|
|
|
|
module.exports.getAllNotifs = async socket => {
|
|
try {
|
|
const allData = await Promise.all([
|
|
|
|
// unreadCuMsgs
|
|
ContactPageMessage.countDocuments({ read: false }),
|
|
|
|
// unreadTickets
|
|
TicketConversation.countDocuments({ messages: { $elemMatch: { isUser: true, read: false } } }),
|
|
|
|
// newCustomers
|
|
User.countDocuments({ scope: ['user'], seenByAdmin: false, confirmed: true }),
|
|
|
|
// newRepresentations
|
|
Representation.countDocuments({ status: 'registered' }),
|
|
|
|
// newPieceRequests
|
|
PieceRequest.countDocuments({ status: 'sent' }),
|
|
|
|
// newOldPieceRequests
|
|
OldPieceRequest.countDocuments({ status: 'sent' }),
|
|
|
|
// newBufferRequests
|
|
BufferRequest.countDocuments({ status: 'sent' }),
|
|
|
|
// newGuaranteeReports
|
|
GuaranteeReport.countDocuments({ status: 'sent', seen: false }),
|
|
|
|
Complaint.countDocuments({ read: false }),
|
|
|
|
// unread withdraw request
|
|
Withdraw.countDocuments({ status: 0 }),
|
|
|
|
// unread GPS request
|
|
UserGPS.countDocuments({ active: false }),
|
|
|
|
// unread award request
|
|
AwardRequest.countDocuments({ status: 0 }),
|
|
|
|
// unread install device request
|
|
InstalledDevice.countDocuments({ status: 0 })
|
|
])
|
|
|
|
const unreadCuMsgs = allData[0]
|
|
const unreadTickets = allData[1]
|
|
const newCustomers = allData[2]
|
|
const newRepresentations = allData[3]
|
|
const newPieceRequests = allData[4]
|
|
const newOldPieceRequests = allData[5]
|
|
const newBufferRequests = allData[6]
|
|
const newGuaranteeReports = allData[7]
|
|
const newComplaintReports = allData[8]
|
|
const newWithdrawRequest = allData[9]
|
|
const pendingUsers = allData[10]
|
|
const newAwardRequest = allData[11]
|
|
const newInstallDeviceRequest = allData[12]
|
|
|
|
|
|
socket.emit(`admin:allNotifs`, {
|
|
unreadCuMsgs,
|
|
unreadTickets,
|
|
newCustomers,
|
|
newRepresentations,
|
|
newPieceRequests,
|
|
newOldPieceRequests,
|
|
newBufferRequests,
|
|
newGuaranteeReports,
|
|
newComplaintReports,
|
|
newWithdrawRequest,
|
|
pendingUsers,
|
|
newAwardRequest,
|
|
newInstallDeviceRequest
|
|
})
|
|
} catch (e) {
|
|
console.log(e)
|
|
}
|
|
}
|
|
|
|
module.exports.notifyAdmin = async type => {
|
|
try {
|
|
const io = global._io
|
|
const admin = io.of('/admin')
|
|
const data = { type }
|
|
|
|
if (type === 'newAwardRequest') {
|
|
const newCustomers = await AwardRequest.countDocuments({ status: 0 })
|
|
|
|
data.newCustomers = newCustomers.length
|
|
}
|
|
if (type === 'newInstallDeviceRequest') {
|
|
const newCustomers = await InstalledDevice.countDocuments({ status: 0 })
|
|
|
|
data.newCustomers = newCustomers.length
|
|
}
|
|
|
|
if (type === 'newWithdrawRequest') {
|
|
const newCustomers = await Withdraw.countDocuments({ status: 0 })
|
|
|
|
data.newCustomers = newCustomers.length
|
|
}
|
|
if (type === 'pendingUsers') {
|
|
const newCustomers = await UserGPS.countDocuments({ active: false })
|
|
|
|
data.newCustomers = newCustomers.length
|
|
}
|
|
if (type === 'updateNewCustomers') {
|
|
const newCustomers = await User.find({ scope: ['user'], seenByAdmin: false })
|
|
data.newCustomers = newCustomers.length
|
|
}
|
|
|
|
if (type === 'updateUnreadCuMsgs') {
|
|
const unreadCuMsgs = await ContactPageMessage.find({ read: false })
|
|
data.unreadCuMsgs = unreadCuMsgs.length
|
|
}
|
|
|
|
if (type === 'updateUnreadTickets') {
|
|
const unreadTickets = await TicketConversation.find({ messages: { $elemMatch: { isUser: true, read: false } } })
|
|
data.unreadTickets = unreadTickets.length
|
|
}
|
|
|
|
if (type === 'updateNewRepresentations') {
|
|
const newRepresentations = await Representation.find({ status: 'registered' })
|
|
data.newRepresentations = newRepresentations.length
|
|
}
|
|
|
|
if (type === 'updateNewPieceRequests') {
|
|
const newPieceRequests = await PieceRequest.find({ status: 'sent' })
|
|
data.newPieceRequests = newPieceRequests.length
|
|
}
|
|
|
|
if (type === 'updateNewOldPieceRequests') {
|
|
const newOldPieceRequests = await OldPieceRequest.find({ status: 'sent' })
|
|
data.newOldPieceRequests = newOldPieceRequests.length
|
|
}
|
|
|
|
if (type === 'updateNewBufferRequests') {
|
|
const newBufferRequests = await BufferRequest.find({ status: 'sent' })
|
|
data.newBufferRequests = newBufferRequests.length
|
|
}
|
|
|
|
if (type === 'updateNewGuaranteeReports') {
|
|
const newGuaranteeReports = await GuaranteeReport.find({ status: 'sent', seen: false })
|
|
data.newGuaranteeReports = newGuaranteeReports.length
|
|
}
|
|
|
|
admin.emit(`admin:notify`, data)
|
|
} catch (e) {
|
|
console.log(e)
|
|
}
|
|
}
|