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 CdkWsdl = require("./cdk-wsdl").default; const logger = require("../utils/logger"); const { CDK_CREDENTIALS, CheckCdkResponseForError } = require("./cdk-wsdl"); // exports.default = async function (socket, cdk_dealerid) { // try { // CdkBase.createLogEvent( // socket, // "DEBUG", // `Getting makes and models list from CDK.` // ); // return await GetCdkMakes(socket, cdk_dealerid); // } catch (error) { // CdkBase.createLogEvent( // socket, // "ERROR", // `Error encountered in CdkGetMakes. ${error}` // ); // } // }; exports.default = async function ReloadCdkMakes(req, res) { const { bodyshopid, cdk_dealerid } = req.body; try { const BearerToken = req.headers.authorization; //Query all CDK Models const newList = await GetCdkMakes(req, cdk_dealerid); //Clear out the existing records const client = new GraphQLClient(process.env.GRAPHQL_ENDPOINT, { headers: { Authorization: BearerToken, }, }); const deleteResult = await client .setHeaders({ Authorization: BearerToken }) .request(queries.DELETE_ALL_DMS_VEHICLES, {}); console.log( "🚀 ~ file: cdk-get-makes.js ~ line 53 ~ deleteResult", deleteResult ); //Insert the new ones. const insertResult = await client .setHeaders({ Authorization: BearerToken }) .request(queries.INSERT_DMS_VEHICLES, { vehicles: newList.map((i) => { return { bodyshopid, makecode: i.makeCode, modelcode: i.modelCode, make: i.makeFullName, model: i.modelFullName, }; }), }); logger.log( "cdk-replace-makes-models-success", "DEBUG", req.user.email, null, { cdk_dealerid, count: newList.length, } ); res.sendStatus(200); } catch (error) { logger.log( "cdk-replace-makes-models-error", "ERROR", req.user.email, null, { cdk_dealerid, error, } ); res.status(500).json(error); } }; async function GetCdkMakes(req, cdk_dealerid) { logger.log("cdk-replace-makes-models", "DEBUG", req.user.email, null, { cdk_dealerid, }); try { const soapClientVehicleInsert = await soap.createClientAsync( CdkWsdl.VehicleInsertUpdate ); const soapResponseVehicleSearch = await soapClientVehicleInsert.getMakeModelAsync( { arg0: CDK_CREDENTIALS, arg1: { id: cdk_dealerid }, }, {} ); CheckCdkResponseForError(null, soapResponseVehicleSearch); const [result, rawResponse, , rawRequest] = soapResponseVehicleSearch; logger.log( "cdk-replace-makes-models-request", "ERROR", req.user.email, null, { cdk_dealerid, xml: rawRequest, } ); logger.log( "cdk-replace-makes-models-response", "ERROR", req.user.email, null, { cdk_dealerid, xml: rawResponse, } ); return result.return; } catch (error) { logger.log( "cdk-replace-makes-models-error", "ERROR", req.user.email, null, { cdk_dealerid, error, } ); throw new Error(error); } }