feature/IO-3060-Realtime-Notifications- Checkpoint
This commit is contained in:
@@ -142,27 +142,38 @@ const sendMail = (type, to, subject, html, taskIds, successCallback, requestInst
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const taskAssignedEmail = async (req, res) => {
|
||||
// We have no event Data, bail
|
||||
// 1. Check if we have new task data in the event body.
|
||||
if (!req?.body?.event?.data?.new) {
|
||||
return res.status(400).json({ message: "No data in the event body" });
|
||||
}
|
||||
|
||||
const { new: newTask } = req.body.event.data;
|
||||
const { new: newTask, old: oldTask } = req.body.event.data;
|
||||
|
||||
// This is not a new task, but a reassignment.
|
||||
const dirty = req.body.event.data?.old && req.body.event.data?.old?.assigned_to;
|
||||
// TODO: THIS IS HERE BECAUSE THE HANDLER NOW DOES 3 FIELDS, WILL NEED TO BE BUILT ON FOR NOTIFICATIONS
|
||||
if (oldTask && oldTask.assigned_to === newTask.assigned_to) {
|
||||
return res.status(200).json({ success: true, message: "assigned_to not changed" });
|
||||
}
|
||||
|
||||
//Query to get the employee assigned currently.
|
||||
// 3. If we made it here, assigned_to changed (or oldTask is missing),
|
||||
// so we continue with the rest of the logic.
|
||||
|
||||
// Query to get the task with bodyshop data, assigned employee data, etc.
|
||||
const { tasks_by_pk } = await client.request(queries.QUERY_TASK_BY_ID, {
|
||||
id: newTask.id
|
||||
});
|
||||
|
||||
// Format date/time with the correct timezone
|
||||
const dateLine = moment().tz(tasks_by_pk.bodyshop.timezone).format("M/DD/YYYY @ hh:mm a");
|
||||
|
||||
// This determines if it was re-assigned (old task exists and had an assigned_to).
|
||||
const dirty = oldTask && oldTask.assigned_to;
|
||||
|
||||
sendMail(
|
||||
"assigned",
|
||||
tasks_by_pk.assigned_to_employee.user_email,
|
||||
`A ${formatPriority(newTask.priority)} priority task has been ${dirty ? "reassigned to" : "created for"} you - ${newTask.title}`,
|
||||
`A ${formatPriority(newTask.priority)} priority task has been ${
|
||||
dirty ? "reassigned" : "created"
|
||||
} for you - ${newTask.title}`,
|
||||
generateEmailTemplate(
|
||||
generateTemplateArgs(
|
||||
newTask.title,
|
||||
@@ -181,8 +192,8 @@ const taskAssignedEmail = async (req, res) => {
|
||||
tasks_by_pk.bodyshop.convenient_company
|
||||
);
|
||||
|
||||
// We return success regardless because we don't want to block the event trigger.
|
||||
res.status(200).json({ success: true });
|
||||
// Return success so we don't block the event trigger.
|
||||
return res.status(200).json({ success: true });
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
const handleJobChange = (req, res) => {
|
||||
return res.status(200).json({ message: "Job change handled." });
|
||||
};
|
||||
|
||||
module.exports = handleJobChange;
|
||||
5
server/notifications/eventHandlers/handeJobsChange.js
Normal file
5
server/notifications/eventHandlers/handeJobsChange.js
Normal file
@@ -0,0 +1,5 @@
|
||||
const handleJobsChange = (req, res) => {
|
||||
return res.status(200).json({ message: "Jobs change handled." });
|
||||
};
|
||||
|
||||
module.exports = handleJobsChange;
|
||||
@@ -1,5 +0,0 @@
|
||||
const handleBillChange = (req, res) => {
|
||||
return res.status(200).json({ message: "Bill change handled." });
|
||||
};
|
||||
|
||||
module.exports = handleBillChange;
|
||||
5
server/notifications/eventHandlers/handleBillsChange.js
Normal file
5
server/notifications/eventHandlers/handleBillsChange.js
Normal file
@@ -0,0 +1,5 @@
|
||||
const handleBillsChange = (req, res) => {
|
||||
return res.status(200).json({ message: "Bills change handled." });
|
||||
};
|
||||
|
||||
module.exports = handleBillsChange;
|
||||
@@ -2,11 +2,13 @@ const express = require("express");
|
||||
const validateFirebaseIdTokenMiddleware = require("../middleware/validateFirebaseIdTokenMiddleware");
|
||||
const { subscribe, unsubscribe, sendNotification } = require("../firebase/firebase-handler");
|
||||
const eventAuthorizationMiddleware = require("../middleware/eventAuthorizationMIddleware");
|
||||
const handleJobChange = require("../notifications/eventHandlers/handeJobChange");
|
||||
const handleBillChange = require("../notifications/eventHandlers/handleBillChange");
|
||||
|
||||
const handlePartsOrderChange = require("../notifications/eventHandlers/handlePartsOrderChange");
|
||||
const handlePartsDispatchChange = require("../notifications/eventHandlers/handlePartsDispatchChange");
|
||||
const handleTasksChange = require("../notifications/eventHandlers/handleTasksChange");
|
||||
const handleTimeTicketsChange = require("../notifications/eventHandlers/handleTimeTicketsChange");
|
||||
const handleJobsChange = require("../notifications/eventHandlers/handeJobsChange");
|
||||
const handleBillsChange = require("../notifications/eventHandlers/handleBillsChange");
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
@@ -16,11 +18,11 @@ router.post("/unsubscribe", validateFirebaseIdTokenMiddleware, unsubscribe);
|
||||
router.post("/sendtestnotification", validateFirebaseIdTokenMiddleware, sendNotification);
|
||||
|
||||
// Hasura Entry points for creating notifications
|
||||
router.post("/events/handleJobChange", eventAuthorizationMiddleware, handleJobChange);
|
||||
router.post("/events/handleBillChange", eventAuthorizationMiddleware, handleBillChange);
|
||||
router.post("/events/handleJobsChange", eventAuthorizationMiddleware, handleJobsChange);
|
||||
router.post("/events/handleBillsChange", eventAuthorizationMiddleware, handleBillsChange);
|
||||
router.post("/events/handlePartsOrderChange", eventAuthorizationMiddleware, handlePartsOrderChange);
|
||||
router.post("/events/handlePartsDispatchChange", eventAuthorizationMiddleware, handlePartsDispatchChange);
|
||||
router.post("/events/handleTasksChange", eventAuthorizationMiddleware, handleTasksChange);
|
||||
router.post("/events/handleTimeTicketsChange", eventAuthorizationMiddleware, handleTasksChange);
|
||||
router.post("/events/handleTimeTicketsChange", eventAuthorizationMiddleware, handleTimeTicketsChange);
|
||||
|
||||
module.exports = router;
|
||||
|
||||
Reference in New Issue
Block a user