From 580641bae67476fb1566b17f79bb1b6ab4aedef4 Mon Sep 17 00:00:00 2001 From: Dave Richer Date: Tue, 11 Feb 2025 15:07:42 -0500 Subject: [PATCH] feature/IO-3096-GlobalNotifications - Checkpoint --- hasura/metadata/tables.yaml | 3 ++ .../eventHandlers/handeJobsChange.js | 7 ++-- .../jobAssignedToMeBuilder.js | 1 + server/notifications/utils/scenarioParser.js | 33 +++++++++---------- 4 files changed, 24 insertions(+), 20 deletions(-) diff --git a/hasura/metadata/tables.yaml b/hasura/metadata/tables.yaml index 51bc81b76..a5af9f5dd 100644 --- a/hasura/metadata/tables.yaml +++ b/hasura/metadata/tables.yaml @@ -4474,6 +4474,9 @@ - name: event-secret value_from_env: EVENT_SECRET request_transform: + body: + action: transform + template: "{\r\n \"event\": {\r\n \"op\": \"UPDATE\",\r\n \"data\": {\r\n \"old\": {\r\n \"id\": {{$body.event.data.old.id}},\r\n \"ro_number\": {{$body.event.data.old.ro_number}},\r\n \"queued_for_parts\": {{$body.event.data.old.queued_for_parts}},\r\n \"employee_prep\": {{$body.event.data.old.employee_prep}},\r\n \"clm_total\": {{$body.event.data.old.clm_total}},\r\n \"towin\": {{$body.event.data.old.towin}},\r\n \"employee_body\": {{$body.event.data.old.employee_body}},\r\n \"converted\": {{$body.event.data.old.converted}},\r\n \"scheduled_in\": {{$body.event.data.old.scheduled_in}},\r\n \"scheduled_completion\": {{$body.event.data.old.scheduled_completion}},\r\n \"scheduled_delivery\": {{$body.event.data.old.scheduled_delivery}},\r\n \"actual_delivery\": {{$body.event.data.old.actual_delivery}},\r\n \"actual_completion\": {{$body.event.data.old.actual_completion}},\r\n \"alt_transport\": {{$body.event.data.old.alt_transport}},\r\n \"date_exported\": {{$body.event.data.old.date_exported}},\r\n \"status\": {{$body.event.data.old.status}},\r\n \"employee_csr\": {{$body.event.data.old.employee_csr}},\r\n \"actual_in\": {{$body.event.data.old.actual_in}},\r\n \"deliverchecklist\": {{$body.event.data.old.deliverchecklist}},\r\n \"comment\": {{$body.event.data.old.comment}},\r\n \"employee_refinish\": {{$body.event.data.old.employee_refinish}},\r\n \"inproduction\": {{$body.event.data.old.inproduction}},\r\n \"production_vars\": {{$body.event.data.old.production_vars}},\r\n \"intakechecklist\": {{$body.event.data.old.intakechecklist}},\r\n \"cieca_ttl\": {{$body.event.data.old.cieca_ttl}},\r\n \"date_invoiced\": {{$body.event.data.old.date_invoiced}}\r\n },\r\n \"new\": {\r\n \"id\": {{$body.event.data.new.id}},\r\n \"ro_number\": {{$body.event.data.old.ro_number}},\r\n \"queued_for_parts\": {{$body.event.data.new.queued_for_parts}},\r\n \"employee_prep\": {{$body.event.data.new.employee_prep}},\r\n \"clm_total\": {{$body.event.data.new.clm_total}},\r\n \"towin\": {{$body.event.data.new.towin}},\r\n \"employee_body\": {{$body.event.data.new.employee_body}},\r\n \"converted\": {{$body.event.data.new.converted}},\r\n \"scheduled_in\": {{$body.event.data.new.scheduled_in}},\r\n \"scheduled_completion\": {{$body.event.data.new.scheduled_completion}},\r\n \"scheduled_delivery\": {{$body.event.data.new.scheduled_delivery}},\r\n \"actual_delivery\": {{$body.event.data.new.actual_delivery}},\r\n \"actual_completion\": {{$body.event.data.new.actual_completion}},\r\n \"alt_transport\": {{$body.event.data.new.alt_transport}},\r\n \"date_exported\": {{$body.event.data.new.date_exported}},\r\n \"status\": {{$body.event.data.new.status}},\r\n \"employee_csr\": {{$body.event.data.new.employee_csr}},\r\n \"actual_in\": {{$body.event.data.new.actual_in}},\r\n \"deliverchecklist\": {{$body.event.data.new.deliverchecklist}},\r\n \"comment\": {{$body.event.data.new.comment}},\r\n \"employee_refinish\": {{$body.event.data.new.employee_refinish}},\r\n \"inproduction\": {{$body.event.data.new.inproduction}},\r\n \"production_vars\": {{$body.event.data.new.production_vars}},\r\n \"intakechecklist\": {{$body.event.data.new.intakechecklist}},\r\n \"cieca_ttl\": {{$body.event.data.new.cieca_ttl}},\r\n \"date_invoiced\": {{$body.event.data.new.date_invoiced}}\r\n }\r\n }\r\n },\r\n \"trigger\": {\r\n \"name\": \"notifications_jobs\"\r\n },\r\n \"table\": {\r\n \"schema\": \"public\",\r\n \"name\": \"jobs\"\r\n }\r\n}\r\n" method: POST query_params: {} template_engine: Kriti diff --git a/server/notifications/eventHandlers/handeJobsChange.js b/server/notifications/eventHandlers/handeJobsChange.js index 84b4ab8ab..f038d8781 100644 --- a/server/notifications/eventHandlers/handeJobsChange.js +++ b/server/notifications/eventHandlers/handeJobsChange.js @@ -2,9 +2,10 @@ const scenarioParser = require("../utils/scenarioParser"); const handleJobsChange = async (req, res) => { const { logger } = req; - scenarioParser(req, `req.body.event.new.id`).catch((e) => - logger.log("notifications-error", "error", "notifications", null, { error: e?.message }) - ); + scenarioParser(req, `req.body.event.new.id`).catch((e) => { + console.dir(e); + logger.log("notifications-error", "error", "notifications", null, { error: e?.message }); + }); return res.status(200).json({ message: "Job Notifications Event Handled." }); }; // diff --git a/server/notifications/scenarioBuilders/jobAssignedToMeBuilder.js b/server/notifications/scenarioBuilders/jobAssignedToMeBuilder.js index 31bdefff6..3f2a31830 100644 --- a/server/notifications/scenarioBuilders/jobAssignedToMeBuilder.js +++ b/server/notifications/scenarioBuilders/jobAssignedToMeBuilder.js @@ -1,4 +1,5 @@ const consoleDir = require("../../utils/consoleDir"); + const jobAssignedToMeBuilder = (data) => { consoleDir(data); }; diff --git a/server/notifications/utils/scenarioParser.js b/server/notifications/utils/scenarioParser.js index 0d9115a38..feaf9dc58 100644 --- a/server/notifications/utils/scenarioParser.js +++ b/server/notifications/utils/scenarioParser.js @@ -3,6 +3,7 @@ const { client: gqlClient } = require("../../graphql-client/graphql-client"); const queries = require("../../graphql-client/queries"); const { isEmpty, isFunction } = require("lodash"); const { getMatchingScenarios } = require("./scenarioMapperr"); +const { writeFile } = require("node:fs").promises; const scenarioParser = async (req, jobIdField) => { // Destructure required fields from the request body @@ -121,23 +122,21 @@ const scenarioParser = async (req, jobIdField) => { if (isEmpty(scenario.scenarioWatchers) || !isFunction(scenario.builder)) { continue; } - scenario - .builder({ - trigger: finalScenarioData.trigger.name, - bodyShopId: finalScenarioData.bodyShopId, - bodyShopName: finalScenarioData.bodyShopName, - scenarioKey: scenario.key, - scenarioTable: scenario.table, - scenarioFields: scenario.fields, - scenarioBuilder: scenario.builder, - scenarioWatchers: scenario.scenarioWatchers, - jobId: finalScenarioData.jobId, - isNew: finalScenarioData.isNew, - changedFieldNames: finalScenarioData.changedFieldNames, - changedFields: finalScenarioData.changedFields, - data: finalScenarioData.data - }) - .catch((error) => console.error(`Error in builder for scenario '${scenario.key}':`, error)); + scenario.builder({ + trigger: finalScenarioData.trigger.name, + bodyShopId: finalScenarioData.bodyShopId, + bodyShopName: finalScenarioData.bodyShopName, + scenarioKey: scenario.key, + scenarioTable: scenario.table, + scenarioFields: scenario.fields, + scenarioBuilder: scenario.builder, + scenarioWatchers: scenario.scenarioWatchers, + jobId: finalScenarioData.jobId, + isNew: finalScenarioData.isNew, + changedFieldNames: finalScenarioData.changedFieldNames, + changedFields: finalScenarioData.changedFields, + data: finalScenarioData.data + }); } };