60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
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();
|
|
}
|
|
};
|