as-services/libs/common/services/alert-geosync.js
2025-06-01 10:10:56 +02:00

64 lines
1.3 KiB
JavaScript

const async = require("async")
const { ctx } = require("@modjo/core")
const tasks = require("~/tasks")
module.exports = async function alertGeosync(params) {
const { addTask } = ctx.require("amqp")
const redis = ctx.require("redisHotGeodata")
const {
alertId,
coordinates,
userId,
deviceId,
notifyAround = false,
notifyRelatives = false,
isLast = false,
} = params
return async.parallel([
async () => {
if (coordinates && coordinates.length === 2) {
const [longitude, latitude] = coordinates
return redis.geoadd("alert", longitude, latitude, alertId)
}
},
async () =>
notifyAround &&
userId &&
deviceId &&
addTask(tasks.GEOCODE_ALERT, {
alertId,
userId,
deviceId,
coordinates,
}),
async () =>
notifyRelatives &&
userId &&
addTask(tasks.RELATIVE_ALERT, {
alertId,
userId,
}),
async () =>
coordinates &&
coordinates.length === 2 &&
addTask(tasks.GEOCODE_ALERT_GUESS_ADDRESS, {
alertId,
coordinates,
isLast,
}),
async () =>
coordinates &&
coordinates.length === 2 &&
addTask(tasks.GEOCODE_ALERT_WHAT3WORDS, {
alertId,
coordinates,
isLast,
}),
])
}