diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index b33247202..b8632faa4 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -3804,6 +3804,37 @@ + + csi + + + labels + + + title + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + + + documents diff --git a/client/src/App/App.container.jsx b/client/src/App/App.container.jsx index b6b837271..def27878c 100644 --- a/client/src/App/App.container.jsx +++ b/client/src/App/App.container.jsx @@ -29,7 +29,8 @@ const wsLink = new WebSocketLink({ reconnect: true, connectionParams: async () => { //const token = localStorage.getItem("token"); - const token = await auth.currentUser.getIdToken(true); + const token = + auth.currentUser && (await auth.currentUser.getIdToken(true)); if (token) { return { headers: { @@ -42,7 +43,8 @@ const wsLink = new WebSocketLink({ }); const subscriptionMiddleware = { applyMiddleware: async (options, next) => { - options.authToken = await auth.currentUser.getIdToken(true); + options.authToken = + auth.currentUser && (await auth.currentUser.getIdToken(true)); next(); }, }; @@ -70,18 +72,21 @@ const link = split( ); const authLink = setContext((_, { headers }) => { - return auth.currentUser.getIdToken().then((token) => { - if (token) { - return { - headers: { - ...headers, - authorization: token ? `Bearer ${token}` : "", - }, - }; - } else { - return { headers }; - } - }); + return ( + auth.currentUser && + auth.currentUser.getIdToken().then((token) => { + if (token) { + return { + headers: { + ...headers, + authorization: token ? `Bearer ${token}` : "", + }, + }; + } else { + return { headers }; + } + }) + ); }); const retryLink = new RetryLink({ diff --git a/client/src/App/App.js b/client/src/App/App.js index b5f7a5d56..e071f0a85 100644 --- a/client/src/App/App.js +++ b/client/src/App/App.js @@ -18,12 +18,13 @@ const SignInPage = lazy(() => import("../pages/sign-in/sign-in.page")); const Unauthorized = lazy(() => import("../pages/unauthorized/unauthorized.component") ); +const CsiPage = lazy(() => import("../pages/csi/csi.container.page")); const mapStateToProps = createStructuredSelector({ - currentUser: selectCurrentUser + currentUser: selectCurrentUser, }); -const mapDispatchToProps = dispatch => ({ - checkUserSession: () => dispatch(checkUserSession()) +const mapDispatchToProps = (dispatch) => ({ + checkUserSession: () => dispatch(checkUserSession()), }); export default connect( @@ -48,9 +49,8 @@ export default connect( }> - - + + {componentList.map((f, idx) => { + switch (f.type) { + case "checkbox": + return ; + case "slider": + return ; + case "text": + return ; + case "textarea": + return ; + case "rate": + return ; + default: + return Error; + } + })} + + ); +} diff --git a/client/src/components/config-form-components/rate/rate.component.jsx b/client/src/components/config-form-components/rate/rate.component.jsx new file mode 100644 index 000000000..42b2e4ca7 --- /dev/null +++ b/client/src/components/config-form-components/rate/rate.component.jsx @@ -0,0 +1,21 @@ +import React from "react"; +import { Form, Rate } from "antd"; +import { useTranslation } from "react-i18next"; + +export default function JobIntakeFormCheckboxComponent({ formItem }) { + const { name, label, required } = formItem; + const { t } = useTranslation(); + return ( + + + + ); +} diff --git a/client/src/components/config-form-components/slider/slider.component.jsx b/client/src/components/config-form-components/slider/slider.component.jsx new file mode 100644 index 000000000..021dbfeab --- /dev/null +++ b/client/src/components/config-form-components/slider/slider.component.jsx @@ -0,0 +1,21 @@ +import { Form, Slider } from "antd"; +import React from "react"; +import { useTranslation } from "react-i18next"; + +export default function JobIntakeFormCheckboxComponent({ formItem }) { + const { name, label, required, min, max } = formItem; + const { t } = useTranslation(); + return ( + + + + ); +} diff --git a/client/src/components/config-form-components/text/text.component.jsx b/client/src/components/config-form-components/text/text.component.jsx new file mode 100644 index 000000000..e12ffa4df --- /dev/null +++ b/client/src/components/config-form-components/text/text.component.jsx @@ -0,0 +1,21 @@ +import React from "react"; +import { Form, Input } from "antd"; +import { useTranslation } from "react-i18next"; + +export default function JobIntakeFormCheckboxComponent({ formItem }) { + const { name, label, required } = formItem; + const { t } = useTranslation(); + return ( + + + + ); +} diff --git a/client/src/components/config-form-components/textarea/textarea.component.jsx b/client/src/components/config-form-components/textarea/textarea.component.jsx new file mode 100644 index 000000000..0ebd6f4f8 --- /dev/null +++ b/client/src/components/config-form-components/textarea/textarea.component.jsx @@ -0,0 +1,21 @@ +import React from "react"; +import { Form, Input } from "antd"; +import { useTranslation } from "react-i18next"; + +export default function JobIntakeFormCheckboxComponent({ formItem }) { + const { name, label, required, rows } = formItem; + const { t } = useTranslation(); + return ( + + + + ); +} diff --git a/client/src/components/job-intake/components/job-intake-form/job-intake-form.component.jsx b/client/src/components/job-intake/components/job-intake-form/job-intake-form.component.jsx index c3afeb7e1..8c6c06518 100644 --- a/client/src/components/job-intake/components/job-intake-form/job-intake-form.component.jsx +++ b/client/src/components/job-intake/components/job-intake-form/job-intake-form.component.jsx @@ -1,18 +1,16 @@ -import React from "react"; -import { Form, Button, Switch, DatePicker, notification } from "antd"; -import CheckboxFormItem from "../job-intake-form-checkbox/job-itnake-form-checkbox.component"; -import { useTranslation } from "react-i18next"; import { useMutation } from "@apollo/react-hooks"; -import { UPDATE_JOB } from "../../../../graphql/jobs.queries"; -import { MARK_LATEST_APPOINTMENT_AS_ARRIVED } from "../../../../graphql/appointments.queries"; -import { useParams } from "react-router-dom"; -import { selectBodyshop } from "../../../../redux/user/user.selectors"; -import { connect } from "react-redux"; -import { createStructuredSelector } from "reselect"; -import { useHistory } from "react-router-dom"; +import { Button, Form, notification, Switch } from "antd"; import queryString from "query-string"; -import { useLocation } from "react-router-dom"; -import DateTimePicker from '../../../form-date-time-picker/form-date-time-picker.component' +import React from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { useHistory, useLocation, useParams } from "react-router-dom"; +import { createStructuredSelector } from "reselect"; +import { MARK_LATEST_APPOINTMENT_AS_ARRIVED } from "../../../../graphql/appointments.queries"; +import { UPDATE_JOB } from "../../../../graphql/jobs.queries"; +import { selectBodyshop } from "../../../../redux/user/user.selectors"; +import DateTimePicker from "../../../form-date-time-picker/form-date-time-picker.component"; +import ConfigFormComponents from "../../../config-form-components/config-form-components.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, @@ -80,14 +78,9 @@ export function JobIntakeForm({ formItems, bodyshop }) { onFinish={handleFinish} initialValues={{ addToProduction: true }}> {t("intake.labels.checklist")} - {formItems.map((f, idx) => { - switch (f.type) { - case "checkbox": - return ; - default: - return Error; - } - })} + + + ; + if (error) return ; + + const handleFinish = (values) => { + console.log("values", values); + }; + + //const { relateddata } = data.csi_by_pk; + const { bodyshop, job, csiquestion } = relateddata; + return ( + + + + {bodyshop.logo_img_path ? ( + + ) : null} + + {bodyshop.shopname || ""} + {`${bodyshop.address1 || ""}`} + {`${bodyshop.address2 || ""}`} + {`${bodyshop.city || ""} ${bodyshop.state || ""} ${ + bodyshop.zip_post || "" + }`} + + + {t("csi.labels.title")} + {`Hi ${job.ownr_fn || ""}!`} + + At {bodyshop.shopname || ""}, we value our customer's feedback. We + would love to hear what you have to say. Please fill out the form + below. + + + + + + + + {t("general.actions.submit")} + + + + + Copyright ImEX.Online. Survey ID: {surveyId} + + + ); +} + +const relateddata = { + bodyshop: { + logo_img_path: "https://via.placeholder.com/150", + shopname: "Kavia Test Autobody", + address1: "123 Fake St", + address2: "Unit #100", + city: "Vancouver", + state: "BC", + zip_post: "V6B 1M9", + country: "Canada", + email: "snaptsoft@gmail.com", + }, + job: { + id: "1234", + ro_number: "RO102384", + ownr_fn: "Patrick", + v_make_desc: "Toyota", + v_model_desc: "Camry", + v_model_yr: "2019", + }, + csiquestion: [ + { + name: "item1", + type: "checkbox", + label: "Checklist Item 1", + required: true, + }, + { + name: "item2", + type: "slider", + label: "Checklist Item 2", + min: 0, + max: 5, + required: true, + }, + { + name: "item3", + type: "textarea", + label: "Checklist Item 3", + required: true, + }, + { + name: "item4", + type: "text", + label: "Checklist Item 4", + required: true, + }, + { + name: "item5", + type: "rate", + label: "Checklist Item 4", + required: true, + }, + ], +}; diff --git a/client/src/pages/landing/landing.page.jsx b/client/src/pages/landing/landing.page.jsx index c565e4f58..ba6914ed5 100644 --- a/client/src/pages/landing/landing.page.jsx +++ b/client/src/pages/landing/landing.page.jsx @@ -11,8 +11,8 @@ export default function LandingPage() { - - Welcome to bodyshop.app. + + ImEX.Online ); diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index f21c316fb..57167a2d2 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -249,6 +249,11 @@ "saved": "Courtesy Car saved successfully." } }, + "csi": { + "labels": { + "title": "Customer Satisfaction Survey" + } + }, "documents": { "actions": { "delete": "Delete Selected Documents", @@ -333,7 +338,7 @@ "no": "No", "out": "Out", "search": "Search...", - "selectdate": "Select date", + "selectdate": "Select date...", "unknown": "Unknown", "yes": "Yes" }, diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index b20c8011d..2de7cdceb 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -249,6 +249,11 @@ "saved": "" } }, + "csi": { + "labels": { + "title": "" + } + }, "documents": { "actions": { "delete": "", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index 48ffb4618..80ee8df55 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -249,6 +249,11 @@ "saved": "" } }, + "csi": { + "labels": { + "title": "" + } + }, "documents": { "actions": { "delete": "", diff --git a/hasura/migrations/1590169457641_create_table_public_csiinvites/down.yaml b/hasura/migrations/1590169457641_create_table_public_csiinvites/down.yaml new file mode 100644 index 000000000..1bc1a8a07 --- /dev/null +++ b/hasura/migrations/1590169457641_create_table_public_csiinvites/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."csiinvites"; + type: run_sql diff --git a/hasura/migrations/1590169457641_create_table_public_csiinvites/up.yaml b/hasura/migrations/1590169457641_create_table_public_csiinvites/up.yaml new file mode 100644 index 000000000..336e8372a --- /dev/null +++ b/hasura/migrations/1590169457641_create_table_public_csiinvites/up.yaml @@ -0,0 +1,27 @@ +- 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\".\"csiinvites\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"jobid\" uuid NOT NULL, \"valid\" boolean NOT NULL + DEFAULT true, \"relateddata\" jsonb, \"bodyshopid\" uuid NOT NULL, \"validuntil\" + date, PRIMARY KEY (\"id\") , FOREIGN KEY (\"jobid\") REFERENCES \"public\".\"jobs\"(\"id\") + ON UPDATE restrict ON DELETE restrict, FOREIGN KEY (\"bodyshopid\") REFERENCES + \"public\".\"bodyshops\"(\"id\") ON UPDATE restrict ON DELETE restrict);\nCREATE + OR REPLACE FUNCTION \"public\".\"set_current_timestamp_updated_at\"()\nRETURNS + TRIGGER AS $$\nDECLARE\n _new record;\nBEGIN\n _new := NEW;\n _new.\"updated_at\" + = NOW();\n RETURN _new;\nEND;\n$$ LANGUAGE plpgsql;\nCREATE TRIGGER \"set_public_csiinvites_updated_at\"\nBEFORE + UPDATE ON \"public\".\"csiinvites\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_csiinvites_updated_at\" ON \"public\".\"csiinvites\" + \nIS 'trigger to set value of column \"updated_at\" to current timestamp on + row update';" + type: run_sql +- args: + name: csiinvites + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1590169486927_track_all_relationships/down.yaml b/hasura/migrations/1590169486927_track_all_relationships/down.yaml new file mode 100644 index 000000000..97efcee36 --- /dev/null +++ b/hasura/migrations/1590169486927_track_all_relationships/down.yaml @@ -0,0 +1,24 @@ +- args: + relationship: csiinvites + table: + name: bodyshops + schema: public + type: drop_relationship +- args: + relationship: bodyshop + table: + name: csiinvites + schema: public + type: drop_relationship +- args: + relationship: job + table: + name: csiinvites + schema: public + type: drop_relationship +- args: + relationship: csiinvites + table: + name: jobs + schema: public + type: drop_relationship diff --git a/hasura/migrations/1590169486927_track_all_relationships/up.yaml b/hasura/migrations/1590169486927_track_all_relationships/up.yaml new file mode 100644 index 000000000..4273ffc16 --- /dev/null +++ b/hasura/migrations/1590169486927_track_all_relationships/up.yaml @@ -0,0 +1,40 @@ +- args: + name: csiinvites + table: + name: bodyshops + schema: public + using: + foreign_key_constraint_on: + column: bodyshopid + table: + name: csiinvites + schema: public + type: create_array_relationship +- args: + name: bodyshop + table: + name: csiinvites + schema: public + using: + foreign_key_constraint_on: bodyshopid + type: create_object_relationship +- args: + name: job + table: + name: csiinvites + schema: public + using: + foreign_key_constraint_on: jobid + type: create_object_relationship +- args: + name: csiinvites + table: + name: jobs + schema: public + using: + foreign_key_constraint_on: + column: jobid + table: + name: csiinvites + schema: public + type: create_array_relationship diff --git a/hasura/migrations/1590169552540_update_permission_user_public_table_csiinvites/down.yaml b/hasura/migrations/1590169552540_update_permission_user_public_table_csiinvites/down.yaml new file mode 100644 index 000000000..a36e524a6 --- /dev/null +++ b/hasura/migrations/1590169552540_update_permission_user_public_table_csiinvites/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: csiinvites + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1590169552540_update_permission_user_public_table_csiinvites/up.yaml b/hasura/migrations/1590169552540_update_permission_user_public_table_csiinvites/up.yaml new file mode 100644 index 000000000..713d020e1 --- /dev/null +++ b/hasura/migrations/1590169552540_update_permission_user_public_table_csiinvites/up.yaml @@ -0,0 +1,30 @@ +- args: + permission: + allow_upsert: true + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - jobid + - valid + - relateddata + - bodyshopid + - validuntil + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: csiinvites + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1590169569261_update_permission_user_public_table_csiinvites/down.yaml b/hasura/migrations/1590169569261_update_permission_user_public_table_csiinvites/down.yaml new file mode 100644 index 000000000..80d0cc5a0 --- /dev/null +++ b/hasura/migrations/1590169569261_update_permission_user_public_table_csiinvites/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: csiinvites + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1590169569261_update_permission_user_public_table_csiinvites/up.yaml b/hasura/migrations/1590169569261_update_permission_user_public_table_csiinvites/up.yaml new file mode 100644 index 000000000..7d4ad8c62 --- /dev/null +++ b/hasura/migrations/1590169569261_update_permission_user_public_table_csiinvites/up.yaml @@ -0,0 +1,28 @@ +- args: + permission: + allow_aggregations: false + columns: + - valid + - validuntil + - relateddata + - created_at + - updated_at + - bodyshopid + - id + - jobid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: csiinvites + schema: public + type: create_select_permission diff --git a/hasura/migrations/1590169577215_update_permission_user_public_table_csiinvites/down.yaml b/hasura/migrations/1590169577215_update_permission_user_public_table_csiinvites/down.yaml new file mode 100644 index 000000000..dbdaaf979 --- /dev/null +++ b/hasura/migrations/1590169577215_update_permission_user_public_table_csiinvites/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: csiinvites + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1590169577215_update_permission_user_public_table_csiinvites/up.yaml b/hasura/migrations/1590169577215_update_permission_user_public_table_csiinvites/up.yaml new file mode 100644 index 000000000..b64e64027 --- /dev/null +++ b/hasura/migrations/1590169577215_update_permission_user_public_table_csiinvites/up.yaml @@ -0,0 +1,29 @@ +- args: + permission: + columns: + - valid + - validuntil + - relateddata + - created_at + - updated_at + - bodyshopid + - id + - jobid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: csiinvites + schema: public + type: create_update_permission diff --git a/hasura/migrations/1590169605126_update_permission_anonymous_public_table_csiinvites/down.yaml b/hasura/migrations/1590169605126_update_permission_anonymous_public_table_csiinvites/down.yaml new file mode 100644 index 000000000..242aad1e8 --- /dev/null +++ b/hasura/migrations/1590169605126_update_permission_anonymous_public_table_csiinvites/down.yaml @@ -0,0 +1,6 @@ +- args: + role: anonymous + table: + name: csiinvites + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1590169605126_update_permission_anonymous_public_table_csiinvites/up.yaml b/hasura/migrations/1590169605126_update_permission_anonymous_public_table_csiinvites/up.yaml new file mode 100644 index 000000000..e7d622616 --- /dev/null +++ b/hasura/migrations/1590169605126_update_permission_anonymous_public_table_csiinvites/up.yaml @@ -0,0 +1,16 @@ +- args: + permission: + allow_aggregations: false + columns: + - id + - relateddata + - valid + - validuntil + computed_fields: [] + filter: {} + limit: 1 + role: anonymous + table: + name: csiinvites + schema: public + type: create_select_permission diff --git a/hasura/migrations/1590169665926_rename_table_public_csiinvites/down.yaml b/hasura/migrations/1590169665926_rename_table_public_csiinvites/down.yaml new file mode 100644 index 000000000..c6240a91c --- /dev/null +++ b/hasura/migrations/1590169665926_rename_table_public_csiinvites/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."csi" rename to "csiinvites"; + type: run_sql diff --git a/hasura/migrations/1590169665926_rename_table_public_csiinvites/up.yaml b/hasura/migrations/1590169665926_rename_table_public_csiinvites/up.yaml new file mode 100644 index 000000000..82cfb93ab --- /dev/null +++ b/hasura/migrations/1590169665926_rename_table_public_csiinvites/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."csiinvites" rename to "csi"; + type: run_sql diff --git a/hasura/migrations/1590169695935_alter_table_public_csi_add_column_response/down.yaml b/hasura/migrations/1590169695935_alter_table_public_csi_add_column_response/down.yaml new file mode 100644 index 000000000..da698f126 --- /dev/null +++ b/hasura/migrations/1590169695935_alter_table_public_csi_add_column_response/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."csi" DROP COLUMN "response"; + type: run_sql diff --git a/hasura/migrations/1590169695935_alter_table_public_csi_add_column_response/up.yaml b/hasura/migrations/1590169695935_alter_table_public_csi_add_column_response/up.yaml new file mode 100644 index 000000000..d2d83d131 --- /dev/null +++ b/hasura/migrations/1590169695935_alter_table_public_csi_add_column_response/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."csi" ADD COLUMN "response" jsonb NULL; + type: run_sql diff --git a/hasura/migrations/1590169707794_update_permission_user_public_table_csi/down.yaml b/hasura/migrations/1590169707794_update_permission_user_public_table_csi/down.yaml new file mode 100644 index 000000000..ae2d88377 --- /dev/null +++ b/hasura/migrations/1590169707794_update_permission_user_public_table_csi/down.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: csi + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - id + - created_at + - updated_at + - jobid + - valid + - relateddata + - bodyshopid + - validuntil + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: csi + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1590169707794_update_permission_user_public_table_csi/up.yaml b/hasura/migrations/1590169707794_update_permission_user_public_table_csi/up.yaml new file mode 100644 index 000000000..ddd5a4897 --- /dev/null +++ b/hasura/migrations/1590169707794_update_permission_user_public_table_csi/up.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: csi + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - bodyshopid + - created_at + - id + - jobid + - relateddata + - response + - updated_at + - valid + - validuntil + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: csi + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1590169716647_update_permission_user_public_table_csi/down.yaml b/hasura/migrations/1590169716647_update_permission_user_public_table_csi/down.yaml new file mode 100644 index 000000000..a608394fd --- /dev/null +++ b/hasura/migrations/1590169716647_update_permission_user_public_table_csi/down.yaml @@ -0,0 +1,33 @@ +- args: + role: user + table: + name: csi + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - valid + - validuntil + - relateddata + - created_at + - updated_at + - bodyshopid + - id + - jobid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: csi + schema: public + type: create_select_permission diff --git a/hasura/migrations/1590169716647_update_permission_user_public_table_csi/up.yaml b/hasura/migrations/1590169716647_update_permission_user_public_table_csi/up.yaml new file mode 100644 index 000000000..ee974fbb7 --- /dev/null +++ b/hasura/migrations/1590169716647_update_permission_user_public_table_csi/up.yaml @@ -0,0 +1,34 @@ +- args: + role: user + table: + name: csi + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - bodyshopid + - created_at + - id + - jobid + - relateddata + - response + - updated_at + - valid + - validuntil + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: csi + schema: public + type: create_select_permission diff --git a/hasura/migrations/1590169723269_update_permission_user_public_table_csi/down.yaml b/hasura/migrations/1590169723269_update_permission_user_public_table_csi/down.yaml new file mode 100644 index 000000000..ddd5a4897 --- /dev/null +++ b/hasura/migrations/1590169723269_update_permission_user_public_table_csi/down.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: csi + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - bodyshopid + - created_at + - id + - jobid + - relateddata + - response + - updated_at + - valid + - validuntil + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: csi + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1590169723269_update_permission_user_public_table_csi/up.yaml b/hasura/migrations/1590169723269_update_permission_user_public_table_csi/up.yaml new file mode 100644 index 000000000..78940bde7 --- /dev/null +++ b/hasura/migrations/1590169723269_update_permission_user_public_table_csi/up.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: csi + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - bodyshopid + - created_at + - id + - jobid + - relateddata + - updated_at + - valid + - validuntil + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: csi + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1590169758310_update_permission_anonymous_public_table_csi/down.yaml b/hasura/migrations/1590169758310_update_permission_anonymous_public_table_csi/down.yaml new file mode 100644 index 000000000..b6dceb83a --- /dev/null +++ b/hasura/migrations/1590169758310_update_permission_anonymous_public_table_csi/down.yaml @@ -0,0 +1,22 @@ +- args: + role: anonymous + table: + name: csi + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - id + - relateddata + - valid + - validuntil + computed_fields: [] + filter: {} + limit: 1 + role: anonymous + table: + name: csi + schema: public + type: create_select_permission diff --git a/hasura/migrations/1590169758310_update_permission_anonymous_public_table_csi/up.yaml b/hasura/migrations/1590169758310_update_permission_anonymous_public_table_csi/up.yaml new file mode 100644 index 000000000..00cf0cd18 --- /dev/null +++ b/hasura/migrations/1590169758310_update_permission_anonymous_public_table_csi/up.yaml @@ -0,0 +1,24 @@ +- args: + role: anonymous + table: + name: csi + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - id + - relateddata + - valid + - validuntil + computed_fields: [] + filter: + valid: + _eq: true + limit: 1 + role: anonymous + table: + name: csi + schema: public + type: create_select_permission diff --git a/hasura/migrations/1590169798330_update_permission_anonymous_public_table_csi/down.yaml b/hasura/migrations/1590169798330_update_permission_anonymous_public_table_csi/down.yaml new file mode 100644 index 000000000..01176a258 --- /dev/null +++ b/hasura/migrations/1590169798330_update_permission_anonymous_public_table_csi/down.yaml @@ -0,0 +1,6 @@ +- args: + role: anonymous + table: + name: csi + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1590169798330_update_permission_anonymous_public_table_csi/up.yaml b/hasura/migrations/1590169798330_update_permission_anonymous_public_table_csi/up.yaml new file mode 100644 index 000000000..48005bc50 --- /dev/null +++ b/hasura/migrations/1590169798330_update_permission_anonymous_public_table_csi/up.yaml @@ -0,0 +1,17 @@ +- args: + permission: + columns: + - response + - updated_at + filter: + valid: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: anonymous + table: + name: csi + schema: public + type: create_update_permission diff --git a/hasura/migrations/1590169811190_update_permission_anonymous_public_table_csi/down.yaml b/hasura/migrations/1590169811190_update_permission_anonymous_public_table_csi/down.yaml new file mode 100644 index 000000000..e452fbfbd --- /dev/null +++ b/hasura/migrations/1590169811190_update_permission_anonymous_public_table_csi/down.yaml @@ -0,0 +1,23 @@ +- args: + role: anonymous + table: + name: csi + schema: public + type: drop_update_permission +- args: + permission: + columns: + - response + - updated_at + filter: + valid: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: anonymous + table: + name: csi + schema: public + type: create_update_permission diff --git a/hasura/migrations/1590169811190_update_permission_anonymous_public_table_csi/up.yaml b/hasura/migrations/1590169811190_update_permission_anonymous_public_table_csi/up.yaml new file mode 100644 index 000000000..bae48de62 --- /dev/null +++ b/hasura/migrations/1590169811190_update_permission_anonymous_public_table_csi/up.yaml @@ -0,0 +1,22 @@ +- args: + role: anonymous + table: + name: csi + schema: public + type: drop_update_permission +- args: + permission: + columns: + - response + filter: + valid: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: anonymous + table: + name: csi + schema: public + type: create_update_permission diff --git a/hasura/migrations/1590172385133_create_table_public_csiquestion/down.yaml b/hasura/migrations/1590172385133_create_table_public_csiquestion/down.yaml new file mode 100644 index 000000000..8c94fd534 --- /dev/null +++ b/hasura/migrations/1590172385133_create_table_public_csiquestion/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."csiquestion"; + type: run_sql diff --git a/hasura/migrations/1590172385133_create_table_public_csiquestion/up.yaml b/hasura/migrations/1590172385133_create_table_public_csiquestion/up.yaml new file mode 100644 index 000000000..cb34a6c6d --- /dev/null +++ b/hasura/migrations/1590172385133_create_table_public_csiquestion/up.yaml @@ -0,0 +1,25 @@ +- 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\".\"csiquestion\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"bodyshopid\" uuid NOT NULL, \"current\" boolean NOT + NULL DEFAULT true, \"config\" jsonb, PRIMARY KEY (\"id\") , FOREIGN KEY (\"bodyshopid\") + REFERENCES \"public\".\"bodyshops\"(\"id\") ON UPDATE restrict ON DELETE restrict);\nCREATE + OR REPLACE FUNCTION \"public\".\"set_current_timestamp_updated_at\"()\nRETURNS + TRIGGER AS $$\nDECLARE\n _new record;\nBEGIN\n _new := NEW;\n _new.\"updated_at\" + = NOW();\n RETURN _new;\nEND;\n$$ LANGUAGE plpgsql;\nCREATE TRIGGER \"set_public_csiquestion_updated_at\"\nBEFORE + UPDATE ON \"public\".\"csiquestion\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_csiquestion_updated_at\" ON \"public\".\"csiquestion\" + \nIS 'trigger to set value of column \"updated_at\" to current timestamp on + row update';" + type: run_sql +- args: + name: csiquestion + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1590172409241_alter_table_public_csi_add_column_questionset/down.yaml b/hasura/migrations/1590172409241_alter_table_public_csi_add_column_questionset/down.yaml new file mode 100644 index 000000000..a9b42b626 --- /dev/null +++ b/hasura/migrations/1590172409241_alter_table_public_csi_add_column_questionset/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."csi" DROP COLUMN "questionset"; + type: run_sql diff --git a/hasura/migrations/1590172409241_alter_table_public_csi_add_column_questionset/up.yaml b/hasura/migrations/1590172409241_alter_table_public_csi_add_column_questionset/up.yaml new file mode 100644 index 000000000..620690374 --- /dev/null +++ b/hasura/migrations/1590172409241_alter_table_public_csi_add_column_questionset/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."csi" ADD COLUMN "questionset" uuid NULL; + type: run_sql diff --git a/hasura/migrations/1590172429767_rename_table_public_csiquestion/down.yaml b/hasura/migrations/1590172429767_rename_table_public_csiquestion/down.yaml new file mode 100644 index 000000000..6112e4cdb --- /dev/null +++ b/hasura/migrations/1590172429767_rename_table_public_csiquestion/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."csiquestions" rename to "csiquestion"; + type: run_sql diff --git a/hasura/migrations/1590172429767_rename_table_public_csiquestion/up.yaml b/hasura/migrations/1590172429767_rename_table_public_csiquestion/up.yaml new file mode 100644 index 000000000..fe2b8144e --- /dev/null +++ b/hasura/migrations/1590172429767_rename_table_public_csiquestion/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."csiquestion" rename to "csiquestions"; + type: run_sql diff --git a/hasura/migrations/1590172446694_set_fk_public_csi_questionset/down.yaml b/hasura/migrations/1590172446694_set_fk_public_csi_questionset/down.yaml new file mode 100644 index 000000000..df44ccc4b --- /dev/null +++ b/hasura/migrations/1590172446694_set_fk_public_csi_questionset/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: alter table "public"."csi" drop constraint "csi_questionset_fkey"; + type: run_sql diff --git a/hasura/migrations/1590172446694_set_fk_public_csi_questionset/up.yaml b/hasura/migrations/1590172446694_set_fk_public_csi_questionset/up.yaml new file mode 100644 index 000000000..c50b62508 --- /dev/null +++ b/hasura/migrations/1590172446694_set_fk_public_csi_questionset/up.yaml @@ -0,0 +1,10 @@ +- args: + cascade: false + read_only: false + sql: |- + alter table "public"."csi" + add constraint "csi_questionset_fkey" + foreign key ("questionset") + references "public"."csiquestions" + ("id") on update restrict on delete restrict; + type: run_sql diff --git a/hasura/migrations/1590172453385_track_all_relationships/down.yaml b/hasura/migrations/1590172453385_track_all_relationships/down.yaml new file mode 100644 index 000000000..cf2f4100a --- /dev/null +++ b/hasura/migrations/1590172453385_track_all_relationships/down.yaml @@ -0,0 +1,24 @@ +- args: + relationship: csiquestions + table: + name: bodyshops + schema: public + type: drop_relationship +- args: + relationship: csiquestion + table: + name: csi + schema: public + type: drop_relationship +- args: + relationship: bodyshop + table: + name: csiquestions + schema: public + type: drop_relationship +- args: + relationship: csis + table: + name: csiquestions + schema: public + type: drop_relationship diff --git a/hasura/migrations/1590172453385_track_all_relationships/up.yaml b/hasura/migrations/1590172453385_track_all_relationships/up.yaml new file mode 100644 index 000000000..3a3ec4cee --- /dev/null +++ b/hasura/migrations/1590172453385_track_all_relationships/up.yaml @@ -0,0 +1,40 @@ +- args: + name: csiquestions + table: + name: bodyshops + schema: public + using: + foreign_key_constraint_on: + column: bodyshopid + table: + name: csiquestions + schema: public + type: create_array_relationship +- args: + name: csiquestion + table: + name: csi + schema: public + using: + foreign_key_constraint_on: questionset + type: create_object_relationship +- args: + name: bodyshop + table: + name: csiquestions + schema: public + using: + foreign_key_constraint_on: bodyshopid + type: create_object_relationship +- args: + name: csis + table: + name: csiquestions + schema: public + using: + foreign_key_constraint_on: + column: questionset + table: + name: csi + schema: public + type: create_array_relationship diff --git a/hasura/migrations/1590172555010_update_permission_anonymous_public_table_csiquestions/down.yaml b/hasura/migrations/1590172555010_update_permission_anonymous_public_table_csiquestions/down.yaml new file mode 100644 index 000000000..7f0a4b721 --- /dev/null +++ b/hasura/migrations/1590172555010_update_permission_anonymous_public_table_csiquestions/down.yaml @@ -0,0 +1,6 @@ +- args: + role: anonymous + table: + name: csiquestions + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1590172555010_update_permission_anonymous_public_table_csiquestions/up.yaml b/hasura/migrations/1590172555010_update_permission_anonymous_public_table_csiquestions/up.yaml new file mode 100644 index 000000000..1140601b0 --- /dev/null +++ b/hasura/migrations/1590172555010_update_permission_anonymous_public_table_csiquestions/up.yaml @@ -0,0 +1,14 @@ +- args: + permission: + allow_aggregations: false + columns: + - config + - id + computed_fields: [] + filter: {} + limit: 1 + role: anonymous + table: + name: csiquestions + schema: public + type: create_select_permission diff --git a/hasura/migrations/1590172596611_update_permission_user_public_table_csiquestions/down.yaml b/hasura/migrations/1590172596611_update_permission_user_public_table_csiquestions/down.yaml new file mode 100644 index 000000000..6f9a069f8 --- /dev/null +++ b/hasura/migrations/1590172596611_update_permission_user_public_table_csiquestions/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: csiquestions + schema: public + type: drop_insert_permission diff --git a/hasura/migrations/1590172596611_update_permission_user_public_table_csiquestions/up.yaml b/hasura/migrations/1590172596611_update_permission_user_public_table_csiquestions/up.yaml new file mode 100644 index 000000000..4ea47f1f5 --- /dev/null +++ b/hasura/migrations/1590172596611_update_permission_user_public_table_csiquestions/up.yaml @@ -0,0 +1,28 @@ +- args: + permission: + allow_upsert: true + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - current + - config + - created_at + - updated_at + - bodyshopid + - id + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: csiquestions + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1590172610009_update_permission_user_public_table_csiquestions/down.yaml b/hasura/migrations/1590172610009_update_permission_user_public_table_csiquestions/down.yaml new file mode 100644 index 000000000..a4e6f5707 --- /dev/null +++ b/hasura/migrations/1590172610009_update_permission_user_public_table_csiquestions/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: csiquestions + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1590172610009_update_permission_user_public_table_csiquestions/up.yaml b/hasura/migrations/1590172610009_update_permission_user_public_table_csiquestions/up.yaml new file mode 100644 index 000000000..1a4308a33 --- /dev/null +++ b/hasura/migrations/1590172610009_update_permission_user_public_table_csiquestions/up.yaml @@ -0,0 +1,26 @@ +- args: + permission: + allow_aggregations: false + columns: + - current + - config + - created_at + - updated_at + - bodyshopid + - id + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: csiquestions + schema: public + type: create_select_permission diff --git a/hasura/migrations/1590172617955_update_permission_user_public_table_csiquestions/down.yaml b/hasura/migrations/1590172617955_update_permission_user_public_table_csiquestions/down.yaml new file mode 100644 index 000000000..c3d5fdecf --- /dev/null +++ b/hasura/migrations/1590172617955_update_permission_user_public_table_csiquestions/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: csiquestions + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1590172617955_update_permission_user_public_table_csiquestions/up.yaml b/hasura/migrations/1590172617955_update_permission_user_public_table_csiquestions/up.yaml new file mode 100644 index 000000000..a5f959d90 --- /dev/null +++ b/hasura/migrations/1590172617955_update_permission_user_public_table_csiquestions/up.yaml @@ -0,0 +1,22 @@ +- args: + permission: + columns: + - current + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: csiquestions + schema: public + type: create_update_permission diff --git a/hasura/migrations/metadata.yaml b/hasura/migrations/metadata.yaml index 942bcc8a1..c0d3e00c3 100644 --- a/hasura/migrations/metadata.yaml +++ b/hasura/migrations/metadata.yaml @@ -384,6 +384,20 @@ tables: table: schema: public name: courtesycars + - name: csiinvites + using: + foreign_key_constraint_on: + column: bodyshopid + table: + schema: public + name: csi + - name: csiquestions + using: + foreign_key_constraint_on: + column: bodyshopid + table: + schema: public + name: csiquestions - name: employees using: foreign_key_constraint_on: @@ -869,6 +883,175 @@ tables: _eq: X-Hasura-User-Id - active: _eq: true +- table: + schema: public + name: csi + object_relationships: + - name: bodyshop + using: + foreign_key_constraint_on: bodyshopid + - name: csiquestion + using: + foreign_key_constraint_on: questionset + - name: job + using: + foreign_key_constraint_on: jobid + insert_permissions: + - role: user + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - bodyshopid + - created_at + - id + - jobid + - relateddata + - updated_at + - valid + - validuntil + select_permissions: + - role: anonymous + permission: + columns: + - id + - relateddata + - valid + - validuntil + filter: + valid: + _eq: true + limit: 1 + - role: user + permission: + columns: + - bodyshopid + - created_at + - id + - jobid + - relateddata + - response + - updated_at + - valid + - validuntil + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + update_permissions: + - role: anonymous + permission: + columns: + - response + filter: + valid: + _eq: true + - role: user + permission: + columns: + - valid + - validuntil + - relateddata + - created_at + - updated_at + - bodyshopid + - id + - jobid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true +- table: + schema: public + name: csiquestions + object_relationships: + - name: bodyshop + using: + foreign_key_constraint_on: bodyshopid + array_relationships: + - name: csis + using: + foreign_key_constraint_on: + column: questionset + table: + schema: public + name: csi + insert_permissions: + - role: user + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - current + - config + - created_at + - updated_at + - bodyshopid + - id + select_permissions: + - role: anonymous + permission: + columns: + - config + - id + filter: {} + limit: 1 + - role: user + permission: + columns: + - current + - config + - created_at + - updated_at + - bodyshopid + - id + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + update_permissions: + - role: user + permission: + columns: + - current + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true - table: schema: public name: documents @@ -1624,6 +1807,13 @@ tables: table: schema: public name: cccontracts + - name: csiinvites + using: + foreign_key_constraint_on: + column: jobid + table: + schema: public + name: csi - name: documents using: foreign_key_constraint_on: