const Dinero = require("dinero.js"); const queries = require("../graphql-client/queries"); //const client = require("../graphql-client/graphql-client").client; const _ = require("lodash"); const GraphQLClient = require("graphql-request").GraphQLClient; const logger = require("../utils/logger"); // Dinero.defaultCurrency = "USD"; // Dinero.globalLocale = "en-CA"; Dinero.globalRoundingMode = "HALF_EVEN"; const path = require("path"); const client = require("../graphql-client/graphql-client").client; require("dotenv").config({ path: path.resolve( process.cwd(), `.env.${process.env.NODE_ENV || "development"}` ), }); async function StatusTransition(req, res) { if (req.headers["event-secret"] !== process.env.EVENT_SECRET) { res.status(401).send("Unauthorized"); return; } res.sendStatus(200); return; const { id: jobid, status: value, shopid: bodyshopid, } = req.body.event.data.new; try { const { update_transitions } = await client.request( queries.UPDATE_OLD_TRANSITION, { jobid: jobid, existingTransition: { end: new Date(), next_value: value, //duration }, } ); let duration = update_transitions.affected_rows === 0 ? 0 : new Date(update_transitions.returning[0].end) - new Date(update_transitions.returning[0].start); const resp2 = await client.request(queries.INSERT_NEW_TRANSITION, { oldTransitionId: update_transitions.affected_rows === 0 ? null : update_transitions.returning[0].id, duration, newTransition: { bodyshopid: bodyshopid, jobid: jobid, start: update_transitions.affected_rows === 0 ? new Date() : update_transitions.returning[0].end, prev_value: update_transitions.affected_rows === 0 ? null : update_transitions.returning[0].value, value: value, type: "status", }, }); //Check to see if there is an existing status transition record. //Query using Job ID, start is not null, end is null. //If there is no existing record, this is the start of the transition life cycle. // Create the initial transition record. //If there is a current status transition record, update it with the end date, duration, and next value. res.sendStatus(200); //.json(ret); } catch (error) { logger.log("job-status-transition-error", "ERROR", req.user?.email, jobid, { message: error.message, stack: error.stack, }); res.status(400).send(JSON.stringify(error)); } } exports.statustransition = StatusTransition;