88 lines
2.5 KiB
JavaScript
88 lines
2.5 KiB
JavaScript
const path = require("path");
|
|
require("dotenv").config({
|
|
path: path.resolve(
|
|
process.cwd(),
|
|
`.env.${process.env.NODE_ENV || "development"}`
|
|
),
|
|
});
|
|
const GraphQLClient = require("graphql-request").GraphQLClient;
|
|
const soap = require("soap");
|
|
const queries = require("../graphql-client/queries");
|
|
const CdkBase = require("../web-sockets/web-socket");
|
|
const CdkWsdl = require("./cdk-wsdl").default;
|
|
|
|
const IMEX_CDK_USER = process.env.IMEX_CDK_USER,
|
|
IMEX_CDK_PASSWORD = process.env.IMEX_CDK_PASSWORD;
|
|
|
|
exports.default = async function (socket, jobid) {
|
|
socket.logEvents = [];
|
|
try {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"DEBUG",
|
|
`Received Job export request for id ${jobid}`
|
|
);
|
|
|
|
const JobData = await QueryJobData(socket, jobid);
|
|
console.log(JSON.stringify(JobData, null, 2));
|
|
const DealerId = JobData.bodyshop.cdk_dealerid;
|
|
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"TRACE",
|
|
`Dealer ID detected: ${JSON.stringify(DealerId)}`
|
|
);
|
|
|
|
// Begin Calculate VID from DMS {1}
|
|
await DetermineDMSVid(socket, JobData);
|
|
} catch (error) {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`Error encountered in JobExport. ${error}`
|
|
);
|
|
} finally {
|
|
//Ensure we always insert logEvents
|
|
//GQL to insert logevents.
|
|
}
|
|
};
|
|
|
|
async function QueryJobData(socket, jobid) {
|
|
CdkBase.createLogEvent(socket, "DEBUG", `Querying job data for id ${jobid}`);
|
|
const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, {});
|
|
const result = await client
|
|
.setHeaders({ Authorization: `Bearer ${socket.handshake.auth.token}` })
|
|
.request(queries.QUERY_JOBS_FOR_CDK_EXPORT, { id: jobid });
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"TRACE",
|
|
`Job data query result ${JSON.stringify(result, null, 2)}`
|
|
);
|
|
return result.jobs_by_pk;
|
|
}
|
|
|
|
async function DetermineDMSVid(socket, JobData) {
|
|
CdkBase.createLogEvent(socket, "TRACE", "{1} Begin Determine DMS VehicleID");
|
|
|
|
try {
|
|
//Create SOAP Request for <getVehIds/>
|
|
const soapClient = await soap.createClientAsync(CdkWsdl.VehicleSearch);
|
|
const result = await soapClient.searchIDsByVINAsync(
|
|
{
|
|
arg0: { password: IMEX_CDK_PASSWORD, username: IMEX_CDK_USER },
|
|
arg1: { id: JobData.bodyshop.cdk_dealerid },
|
|
arg2: { VIN: JobData.v_vin },
|
|
},
|
|
|
|
{}
|
|
);
|
|
console.log(result);
|
|
} catch (error) {
|
|
CdkBase.createLogEvent(
|
|
socket,
|
|
"ERROR",
|
|
`Error in DetermineDMSVid - ${JSON.stringify(error, null, 2)}`
|
|
);
|
|
}
|
|
}
|