diff --git a/client/src/components/dms-cdk-makes/dms-cdk-makes.component.jsx b/client/src/components/dms-cdk-makes/dms-cdk-makes.component.jsx
index c972178b1..b0ad42ee9 100644
--- a/client/src/components/dms-cdk-makes/dms-cdk-makes.component.jsx
+++ b/client/src/components/dms-cdk-makes/dms-cdk-makes.component.jsx
@@ -82,13 +82,6 @@ export function DmsCdkMakes({ bodyshop, form, socket }) {
}}
rowSelection={{
onSelect: (record, selected, ...props) => {
- console.log(
- "🚀 ~ file: dms-cdk-makes.component.jsx ~ line 85 ~ record, selected, ...props",
- record,
- selected,
- ...props
- );
-
setSelectedModel(record);
},
@@ -100,15 +93,9 @@ export function DmsCdkMakes({ bodyshop, form, socket }) {
);
diff --git a/client/src/components/dms-cdk-makes/dms-cdk-makes.refetch.component.jsx b/client/src/components/dms-cdk-makes/dms-cdk-makes.refetch.component.jsx
new file mode 100644
index 000000000..a154e819d
--- /dev/null
+++ b/client/src/components/dms-cdk-makes/dms-cdk-makes.refetch.component.jsx
@@ -0,0 +1,32 @@
+import { Button } from "antd";
+import axios from "axios";
+import React, { useState } from "react";
+import { connect } from "react-redux";
+import { createStructuredSelector } from "reselect";
+import { selectBodyshop } from "../../redux/user/user.selectors";
+const mapStateToProps = createStructuredSelector({
+ //currentUser: selectCurrentUser
+ bodyshop: selectBodyshop,
+});
+const mapDispatchToProps = (dispatch) => ({
+ //setUserLanguage: language => dispatch(setUserLanguage(language))
+});
+export default connect(mapStateToProps, mapDispatchToProps)(DmsCdkMakesRefetch);
+
+export function DmsCdkMakesRefetch({ bodyshop, form, socket }) {
+ const [loading, setLoading] = useState(false);
+ const handleRefetch = async () => {
+ setLoading(true);
+ const response = await axios.post("/cdk/getvehicles", {
+ cdk_dealerid: bodyshop.cdk_dealerid,
+ bodyshopid: bodyshop.id,
+ });
+ console.log(response);
+ setLoading(false);
+ };
+ return (
+
+ );
+}
diff --git a/client/src/components/dms-post-form/dms-post-form.component.jsx b/client/src/components/dms-post-form/dms-post-form.component.jsx
index 7ce33dd83..df492cde0 100644
--- a/client/src/components/dms-post-form/dms-post-form.component.jsx
+++ b/client/src/components/dms-post-form/dms-post-form.component.jsx
@@ -18,6 +18,7 @@ import CurrencyInput from "../form-items-formatted/currency-form-item.component"
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
import Dinero from "dinero.js";
import { determineDmsType } from "../../pages/dms/dms.container";
+import DmsCdkMakesRefetch from "../dms-cdk-makes/dms-cdk-makes.refetch.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
});
@@ -113,8 +114,8 @@ export function DmsPostForm({ bodyshop, socket, job }) {
+
diff --git a/hasura/migrations/1629520416914_create_table_public_dms_vehicles/down.yaml b/hasura/migrations/1629520416914_create_table_public_dms_vehicles/down.yaml
new file mode 100644
index 000000000..e8a69a7f3
--- /dev/null
+++ b/hasura/migrations/1629520416914_create_table_public_dms_vehicles/down.yaml
@@ -0,0 +1,5 @@
+- args:
+ cascade: false
+ read_only: false
+ sql: DROP TABLE "public"."dms_vehicles";
+ type: run_sql
diff --git a/hasura/migrations/1629520416914_create_table_public_dms_vehicles/up.yaml b/hasura/migrations/1629520416914_create_table_public_dms_vehicles/up.yaml
new file mode 100644
index 000000000..eadd2690a
--- /dev/null
+++ b/hasura/migrations/1629520416914_create_table_public_dms_vehicles/up.yaml
@@ -0,0 +1,18 @@
+- args:
+ cascade: false
+ read_only: false
+ sql: CREATE EXTENSION IF NOT EXISTS pgcrypto;
+ type: run_sql
+- args:
+ cascade: false
+ read_only: false
+ sql: CREATE TABLE "public"."dms_vehicles"("id" uuid NOT NULL DEFAULT gen_random_uuid(),
+ "created_at" timestamptz NOT NULL DEFAULT now(), "makecode" text NOT NULL, "modelcode"
+ text NOT NULL, "make" text NOT NULL, "model" text NOT NULL, "bodyshopid" uuid
+ NOT NULL, PRIMARY KEY ("id") , FOREIGN KEY ("bodyshopid") REFERENCES "public"."bodyshops"("id")
+ ON UPDATE cascade ON DELETE cascade);
+ type: run_sql
+- args:
+ name: dms_vehicles
+ schema: public
+ type: add_existing_table_or_view
diff --git a/hasura/migrations/1629520454038_track_all_relationships/down.yaml b/hasura/migrations/1629520454038_track_all_relationships/down.yaml
new file mode 100644
index 000000000..d745605a5
--- /dev/null
+++ b/hasura/migrations/1629520454038_track_all_relationships/down.yaml
@@ -0,0 +1,12 @@
+- args:
+ relationship: dms_vehicles
+ table:
+ name: bodyshops
+ schema: public
+ type: drop_relationship
+- args:
+ relationship: bodyshop
+ table:
+ name: dms_vehicles
+ schema: public
+ type: drop_relationship
diff --git a/hasura/migrations/1629520454038_track_all_relationships/up.yaml b/hasura/migrations/1629520454038_track_all_relationships/up.yaml
new file mode 100644
index 000000000..a6ec79cc2
--- /dev/null
+++ b/hasura/migrations/1629520454038_track_all_relationships/up.yaml
@@ -0,0 +1,20 @@
+- args:
+ name: dms_vehicles
+ table:
+ name: bodyshops
+ schema: public
+ using:
+ foreign_key_constraint_on:
+ column: bodyshopid
+ table:
+ name: dms_vehicles
+ schema: public
+ type: create_array_relationship
+- args:
+ name: bodyshop
+ table:
+ name: dms_vehicles
+ schema: public
+ using:
+ foreign_key_constraint_on: bodyshopid
+ type: create_object_relationship
diff --git a/hasura/migrations/1629520509486_update_permission_user_public_table_dms_vehicles/down.yaml b/hasura/migrations/1629520509486_update_permission_user_public_table_dms_vehicles/down.yaml
new file mode 100644
index 000000000..972d7b719
--- /dev/null
+++ b/hasura/migrations/1629520509486_update_permission_user_public_table_dms_vehicles/down.yaml
@@ -0,0 +1,6 @@
+- args:
+ role: user
+ table:
+ name: dms_vehicles
+ schema: public
+ type: drop_select_permission
diff --git a/hasura/migrations/1629520509486_update_permission_user_public_table_dms_vehicles/up.yaml b/hasura/migrations/1629520509486_update_permission_user_public_table_dms_vehicles/up.yaml
new file mode 100644
index 000000000..892fb145f
--- /dev/null
+++ b/hasura/migrations/1629520509486_update_permission_user_public_table_dms_vehicles/up.yaml
@@ -0,0 +1,28 @@
+- args:
+ permission:
+ allow_aggregations: false
+ backend_only: false
+ columns:
+ - id
+ - created_at
+ - makecode
+ - modelcode
+ - make
+ - model
+ - bodyshopid
+ computed_fields: []
+ filter:
+ bodyshop:
+ associations:
+ _and:
+ - user:
+ authid:
+ _eq: X-Hasura-User-Id
+ - active:
+ _eq: true
+ limit: null
+ role: user
+ table:
+ name: dms_vehicles
+ schema: public
+ type: create_select_permission
diff --git a/hasura/migrations/1629520623978_update_permission_user_public_table_dms_vehicles/down.yaml b/hasura/migrations/1629520623978_update_permission_user_public_table_dms_vehicles/down.yaml
new file mode 100644
index 000000000..1d905252b
--- /dev/null
+++ b/hasura/migrations/1629520623978_update_permission_user_public_table_dms_vehicles/down.yaml
@@ -0,0 +1,6 @@
+- args:
+ role: user
+ table:
+ name: dms_vehicles
+ schema: public
+ type: drop_insert_permission
diff --git a/hasura/migrations/1629520623978_update_permission_user_public_table_dms_vehicles/up.yaml b/hasura/migrations/1629520623978_update_permission_user_public_table_dms_vehicles/up.yaml
new file mode 100644
index 000000000..13cb03c98
--- /dev/null
+++ b/hasura/migrations/1629520623978_update_permission_user_public_table_dms_vehicles/up.yaml
@@ -0,0 +1,27 @@
+- args:
+ permission:
+ allow_upsert: true
+ backend_only: false
+ check:
+ bodyshop:
+ associations:
+ _and:
+ - user:
+ authid:
+ _eq: X-Hasura-User-Id
+ - active:
+ _eq: true
+ columns:
+ - id
+ - created_at
+ - makecode
+ - modelcode
+ - make
+ - model
+ - bodyshopid
+ set: {}
+ role: user
+ table:
+ name: dms_vehicles
+ schema: public
+ type: create_insert_permission
diff --git a/hasura/migrations/1629520632595_update_permission_user_public_table_dms_vehicles/down.yaml b/hasura/migrations/1629520632595_update_permission_user_public_table_dms_vehicles/down.yaml
new file mode 100644
index 000000000..45e52f5d8
--- /dev/null
+++ b/hasura/migrations/1629520632595_update_permission_user_public_table_dms_vehicles/down.yaml
@@ -0,0 +1,6 @@
+- args:
+ role: user
+ table:
+ name: dms_vehicles
+ schema: public
+ type: drop_update_permission
diff --git a/hasura/migrations/1629520632595_update_permission_user_public_table_dms_vehicles/up.yaml b/hasura/migrations/1629520632595_update_permission_user_public_table_dms_vehicles/up.yaml
new file mode 100644
index 000000000..71a547c0e
--- /dev/null
+++ b/hasura/migrations/1629520632595_update_permission_user_public_table_dms_vehicles/up.yaml
@@ -0,0 +1,26 @@
+- args:
+ permission:
+ backend_only: false
+ columns:
+ - make
+ - makecode
+ - model
+ - modelcode
+ - created_at
+ - bodyshopid
+ - id
+ filter:
+ bodyshop:
+ associations:
+ _and:
+ - user:
+ authid:
+ _eq: X-Hasura-User-Id
+ - active:
+ _eq: true
+ set: {}
+ role: user
+ table:
+ name: dms_vehicles
+ schema: public
+ type: create_update_permission
diff --git a/hasura/migrations/1629521860924_update_permission_user_public_table_dms_vehicles/down.yaml b/hasura/migrations/1629521860924_update_permission_user_public_table_dms_vehicles/down.yaml
new file mode 100644
index 000000000..a4ff6bf77
--- /dev/null
+++ b/hasura/migrations/1629521860924_update_permission_user_public_table_dms_vehicles/down.yaml
@@ -0,0 +1,6 @@
+- args:
+ role: user
+ table:
+ name: dms_vehicles
+ schema: public
+ type: drop_delete_permission
diff --git a/hasura/migrations/1629521860924_update_permission_user_public_table_dms_vehicles/up.yaml b/hasura/migrations/1629521860924_update_permission_user_public_table_dms_vehicles/up.yaml
new file mode 100644
index 000000000..f1ee13adf
--- /dev/null
+++ b/hasura/migrations/1629521860924_update_permission_user_public_table_dms_vehicles/up.yaml
@@ -0,0 +1,17 @@
+- args:
+ permission:
+ backend_only: false
+ filter:
+ bodyshop:
+ associations:
+ _and:
+ - user:
+ authid:
+ _eq: X-Hasura-User-Id
+ - active:
+ _eq: true
+ role: user
+ table:
+ name: dms_vehicles
+ schema: public
+ type: create_delete_permission
diff --git a/hasura/migrations/metadata.yaml b/hasura/migrations/metadata.yaml
index 62d9f434a..063efca8e 100644
--- a/hasura/migrations/metadata.yaml
+++ b/hasura/migrations/metadata.yaml
@@ -721,6 +721,13 @@ tables:
table:
schema: public
name: csiquestions
+ - name: dms_vehicles
+ using:
+ foreign_key_constraint_on:
+ column: bodyshopid
+ table:
+ schema: public
+ name: dms_vehicles
- name: documents
using:
foreign_key_constraint_on:
@@ -1527,6 +1534,87 @@ tables:
- active:
_eq: true
check: null
+- table:
+ schema: public
+ name: dms_vehicles
+ object_relationships:
+ - name: bodyshop
+ using:
+ foreign_key_constraint_on: bodyshopid
+ insert_permissions:
+ - role: user
+ permission:
+ check:
+ bodyshop:
+ associations:
+ _and:
+ - user:
+ authid:
+ _eq: X-Hasura-User-Id
+ - active:
+ _eq: true
+ columns:
+ - id
+ - created_at
+ - makecode
+ - modelcode
+ - make
+ - model
+ - bodyshopid
+ backend_only: false
+ select_permissions:
+ - role: user
+ permission:
+ columns:
+ - id
+ - created_at
+ - makecode
+ - modelcode
+ - make
+ - model
+ - bodyshopid
+ filter:
+ bodyshop:
+ associations:
+ _and:
+ - user:
+ authid:
+ _eq: X-Hasura-User-Id
+ - active:
+ _eq: true
+ update_permissions:
+ - role: user
+ permission:
+ columns:
+ - make
+ - makecode
+ - model
+ - modelcode
+ - created_at
+ - bodyshopid
+ - id
+ filter:
+ bodyshop:
+ associations:
+ _and:
+ - user:
+ authid:
+ _eq: X-Hasura-User-Id
+ - active:
+ _eq: true
+ check: null
+ delete_permissions:
+ - role: user
+ permission:
+ filter:
+ bodyshop:
+ associations:
+ _and:
+ - user:
+ authid:
+ _eq: X-Hasura-User-Id
+ - active:
+ _eq: true
- table:
schema: public
name: documents
@@ -4097,6 +4185,7 @@ tables:
- created_at
- date
- employeeid
+ - flat_rate
- id
- jobid
- memo
@@ -4116,6 +4205,7 @@ tables:
- created_at
- date
- employeeid
+ - flat_rate
- id
- jobid
- memo
@@ -4144,6 +4234,7 @@ tables:
- created_at
- date
- employeeid
+ - flat_rate
- id
- jobid
- memo
diff --git a/server.js b/server.js
index 5b59ec283..b596ff0b2 100644
--- a/server.js
+++ b/server.js
@@ -21,6 +21,23 @@ const app = express();
const port = process.env.PORT || 5000;
//const port = 5000;
+const http = require("http");
+const server = http.createServer(app);
+const { Server } = require("socket.io");
+const io = new Server(server, {
+ path: "/ws",
+ cors: {
+ origin: [
+ "https://test.imex.online",
+ "http://localhost:3000",
+ "https://imex.online",
+ ],
+ methods: ["GET", "POST"],
+ },
+});
+exports.io = io;
+require("./server/web-sockets/web-socket");
+
//app.use(fb.validateFirebaseIdToken);
app.use(compression());
app.use(bodyParser.json({ limit: "50mb" }));
@@ -147,28 +164,14 @@ app.post("/data/ah", data.autohouse);
var ioevent = require("./server/ioevent/ioevent");
app.post("/ioevent", ioevent.default);
+var cdkGetMake = require("./server/cdk/cdk-get-makes");
+app.post("/cdk/getvehicles", fb.validateFirebaseIdToken, cdkGetMake.default);
+
app.get("/", async function (req, res) {
res.status(200).send("Access Forbidden.");
});
-const http = require("http");
-const server = http.createServer(app);
-const { Server } = require("socket.io");
-const io = new Server(server, {
- path: "/ws",
- cors: {
- origin: [
- "https://test.imex.online",
- "http://localhost:3000",
- "https://imex.online",
- ],
- methods: ["GET", "POST"],
- },
-});
-
server.listen(port, (error) => {
if (error) throw error;
logger.log(`[${process.env.NODE_ENV}] Server running on port ${port}`);
});
-exports.io = io;
-require("./server/web-sockets/web-socket");
diff --git a/server/cdk/cdk-get-makes.js b/server/cdk/cdk-get-makes.js
index cdcb21eb8..da3343541 100644
--- a/server/cdk/cdk-get-makes.js
+++ b/server/cdk/cdk-get-makes.js
@@ -15,32 +15,101 @@ const Dinero = require("dinero.js");
const _ = require("lodash");
const { CDK_CREDENTIALS, CheckCdkResponseForError } = require("./cdk-wsdl");
const { performance } = require("perf_hooks");
+const apiGqlClient = require("../graphql-client/graphql-client").client;
-exports.default = async function (socket, cdk_dealerid) {
+// 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 {
- CdkBase.createLogEvent(
- socket,
- "DEBUG",
- `Getting makes and models list from CDK.`
+ const BearerToken = req.headers.authorization;
+ //Query all CDK Models
+ const newList = await GetCdkMakes(req, cdk_dealerid);
+ console.log("🚀 ~ file: cdk-get-makes.js ~ line 40 ~ newList", newList);
+
+ //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,
+ };
+ }),
+ });
+ console.log(
+ "🚀 ~ file: cdk-get-makes.js ~ line 66 ~ insertResult",
+ insertResult
+ );
+
+ logger.log(
+ "cdk-replace-makes-models-success",
+ "DEBUG",
+ req.user.email,
+ null,
+ {
+ cdk_dealerid,
+ count: newList.length,
+ }
);
- return await GetCdkMakes(socket, cdk_dealerid);
} catch (error) {
- CdkBase.createLogEvent(
- socket,
+ logger.log(
+ "cdk-replace-makes-models-error",
"ERROR",
- `Error encountered in CdkGetMakes. ${error}`
+ req.user.email,
+ null,
+ {
+ cdk_dealerid,
+ error,
+ }
);
}
};
-async function GetCdkMakes(socket, cdk_dealerid) {
- CdkBase.createLogEvent(socket, "TRACE", `{1} Begin GetCDkMakes WSDL Call`);
+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.VehicleInsert
);
- const start = performance.now();
const soapResponseVehicleSearch =
await soapClientVehicleInsert.getMakeModelAsync(
@@ -51,28 +120,25 @@ async function GetCdkMakes(socket, cdk_dealerid) {
{}
);
- CheckCdkResponseForError(socket, soapResponseVehicleSearch);
+
+ CheckCdkResponseForError(null, soapResponseVehicleSearch);
const [
result, //rawResponse, soapheader, rawRequest
] = soapResponseVehicleSearch;
- const end = performance.now();
- CdkBase.createLogEvent(
- socket,
- "TRACE",
- `soapClientVehicleInsert.getMakeModelAsync Result Length ${
- result.return.length
- } and took ${end - start}ms`
+
+ return result.return;
+ } catch (error) {
+ logger.log(
+ "cdk-replace-makes-models-error",
+ "ERROR",
+ req.user.email,
+ null,
+ {
+ cdk_dealerid,
+ error,
+ }
);
- return result.return.map((element, index) => {
- return { id: index, ...element };
- });
- } catch (error) {
- CdkBase.createLogEvent(
- socket,
- "ERROR",
- `Error in GetCdkMakes - ${JSON.stringify(error, null, 2)}`
- );
throw new Error(error);
}
}
diff --git a/server/graphql-client/queries.js b/server/graphql-client/queries.js
index 087f45de7..726e34bec 100644
--- a/server/graphql-client/queries.js
+++ b/server/graphql-client/queries.js
@@ -927,6 +927,19 @@ exports.GET_AUTOHOUSE_SHOPS = `query GET_AUTOHOUSE_SHOPS {
imexshopid
}
}
+`;
+exports.DELETE_ALL_DMS_VEHICLES = `mutation DELETE_ALL_DMS_VEHICLES{
+ delete_dms_vehicles(where: {}) {
+ affected_rows
+ }
+}
+`;
+exports.INSERT_DMS_VEHICLES = `mutation INSERT_DMS_VEHICLES($vehicles: [dms_vehicles_insert_input!]!) {
+ insert_dms_vehicles(objects: $vehicles) {
+affected_rows
+ }
+}
+
`;
exports.GET_CDK_ALLOCATIONS = `