85 lines
2.2 KiB
JavaScript
85 lines
2.2 KiB
JavaScript
const Transaction = require('../../models/Transaction')
|
|
const Announcement = require('../../models/Announcement')
|
|
|
|
module.exports.getAllNotifs = async socket => {
|
|
try {
|
|
const agentInbox = await Transaction.find({ agent_id: socket.agentId, seen: false })
|
|
|
|
socket.emit(`agent:allNotifs`, {
|
|
agentInbox: agentInbox.length
|
|
})
|
|
} catch (e) {
|
|
console.log(e)
|
|
}
|
|
}
|
|
|
|
module.exports.notifyAgent = async (type, agent_id) => {
|
|
try {
|
|
const io = global._io
|
|
const agent = io.of('/agent')
|
|
const data = { type }
|
|
|
|
if (type === 'updateAgentInbox') {
|
|
const agentInbox = await Transaction.find({ agent_id, seen: false })
|
|
data.agentInbox = agentInbox.length
|
|
}
|
|
|
|
agent.to(agent_id.toString()).emit(`agent:notify`, data)
|
|
} catch (e) {
|
|
console.log(e)
|
|
}
|
|
}
|
|
|
|
module.exports.notifyAllAgents = type => {
|
|
try {
|
|
const io = global._io
|
|
const agent = io.of('/agent')
|
|
const data = { type }
|
|
|
|
agent.emit('agent:notifyAll', data)
|
|
} catch (e) {
|
|
console.log(e)
|
|
}
|
|
}
|
|
|
|
module.exports.fetchAnnouncements = async socket => {
|
|
try {
|
|
const announcements = await Announcement.find({ expired: false, isForAgents: true })
|
|
const modifiedAnnouncements = []
|
|
let newAnnouncementsCount = 0
|
|
for await (const announcement of announcements) {
|
|
const notif = { ...announcement._doc, seen: true }
|
|
if (!notif.seenBy.includes(socket.userId)) {
|
|
notif.seen = false
|
|
newAnnouncementsCount++
|
|
}
|
|
delete notif.seenBy
|
|
delete notif.expired
|
|
delete notif.isForAgents
|
|
delete notif._creator
|
|
modifiedAnnouncements.push(notif)
|
|
}
|
|
|
|
socket.emit('agent:announcements', {
|
|
newAgentAnnosCount: newAnnouncementsCount,
|
|
agentAnnouncements: modifiedAnnouncements.reverse()
|
|
})
|
|
} catch (e) {
|
|
console.log(e)
|
|
}
|
|
}
|
|
|
|
module.exports.updateAnnouncement = async (socket, id) => {
|
|
try {
|
|
if (id) {
|
|
const announcment = await Announcement.findById(id)
|
|
if (!announcment) throw new Error('invalid announcemnet id')
|
|
if (!announcment.seenBy.includes(socket.userId)) announcment.seenBy.push(socket.userId)
|
|
await announcment.save()
|
|
socket.emit('agent:fetchNewAnnouncements')
|
|
}
|
|
} catch (e) {
|
|
console.log(e)
|
|
}
|
|
}
|