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 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)}` ); } }