const Dinero = require("dinero.js"); const queries = require("../graphql-client/queries"); const { job } = require("../scheduling/scheduling-job"); const GraphQLClient = require("graphql-request").GraphQLClient; const logger = require("../utils/logger"); // Dinero.defaultCurrency = "USD"; // Dinero.globalLocale = "en-CA"; exports.partsScan = async function (req, res) { const BearerToken = req.headers.authorization; const { jobid } = req.body; logger.log("job-parts-scan", "DEBUG", req.user?.email, jobid, null); const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, { headers: { Authorization: BearerToken, }, }); try { const data = await client .setHeaders({ Authorization: BearerToken }) .request(queries.QUERY_PARTS_SCAN, { id: jobid, }); const IdsToMarkCritical = []; const RegExpressions = data.jobs_by_pk.bodyshop.md_parts_scan.map( (r) => new RegExp(r.expression, r.flags) ); data.jobs_by_pk.joblines.forEach((jobline) => { RegExpressions.forEach((rExp) => { if (jobline.line_desc.match(rExp)) { console.log("Critical Parts Match", jobline.line_desc, rExp); IdsToMarkCritical.push(jobline); } }); }); console.log(IdsToMarkCritical); //Mark off ids not critical and critical. const result = await client .setHeaders({ Authorization: BearerToken }) .request(queries.UPDATE_PARTS_CRITICAL, { IdsToMarkCritical: IdsToMarkCritical.map((i) => i.id), jobid: jobid, }); res.status(200).json(result); } catch (error) { logger.log("job-parts-scan-error", "ERROR", req.user.email, id, { jobid: id, error, }); res.status(503).send(); } };