diff --git a/_business_logic/documents.md b/_business_logic/documents.md index 7291c0a58..9641363eb 100644 --- a/_business_logic/documents.md +++ b/_business_logic/documents.md @@ -5,4 +5,4 @@ 1. Get a presigned URL by hitting our own express server with a unique key. 2. Use this presigned URL to upload an individual file. 3. Store the key + the bucket name to the documents record. -4. ???Figure out how to add thumbnails. \ No newline at end of file +4. \ No newline at end of file diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 5e4230e5f..8b29804b6 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -24,6 +24,27 @@ errors + + deletes3 + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + getpresignurl false @@ -66,6 +87,27 @@ + + nodocuments + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + @@ -97,6 +139,27 @@ successes + + delete + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + insert false @@ -374,6 +437,27 @@ + + convert + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + postInvoices false @@ -442,6 +526,27 @@ + + nodates + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + nojobselected false @@ -573,6 +678,69 @@ fields + + actual_completion + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + actual_delivery + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + actual_in + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + claim_total false @@ -636,6 +804,132 @@ + + date_closed + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + date_estimated + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + date_exported + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + date_invoiced + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + date_open + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + date_scheduled + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + deductible false @@ -720,6 +1014,27 @@ + + ownr_ea + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + phone1 false @@ -741,6 +1056,27 @@ + + phoneshort + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + ro_number false @@ -762,6 +1098,69 @@ + + scheduled_completion + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + scheduled_delivery + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + scheduled_in + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + status false @@ -1066,27 +1465,6 @@ - - convert - false - - - - - - en-US - false - - - es-MX - false - - - fr-CA - false - - - documents false @@ -1823,6 +2201,37 @@ + + user + + + actions + + + signout + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + + + vehicles diff --git a/client/src/App/App.js b/client/src/App/App.js index b9eeb58cc..3fa93e5d1 100644 --- a/client/src/App/App.js +++ b/client/src/App/App.js @@ -30,6 +30,7 @@ export default () => { useEffect(() => { //Run the auth code only on the first render. const unsubscribeFromAuth = auth.onAuthStateChanged(async user => { + console.log("Auth State Changed.") if (user) { let token; token = await user.getIdToken(); diff --git a/client/src/components/current-user-dropdown/current-user-dropdown.component.jsx b/client/src/components/current-user-dropdown/current-user-dropdown.component.jsx index c23626ac7..177a1cb97 100644 --- a/client/src/components/current-user-dropdown/current-user-dropdown.component.jsx +++ b/client/src/components/current-user-dropdown/current-user-dropdown.component.jsx @@ -1,12 +1,13 @@ -import React from "react"; -import { Link } from "react-router-dom"; -import { Dropdown, Menu, Icon, Avatar, Row, Col } from "antd"; -import { useTranslation } from "react-i18next"; -import i18next from "i18next"; import { useQuery } from "@apollo/react-hooks"; -import { GET_CURRENT_USER } from "../../graphql/local.queries"; +import { Avatar, Col, Dropdown, Icon, Menu, Row } from "antd"; +import i18next from "i18next"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; import UserImage from "../../assets/User.svg"; +import { GET_CURRENT_USER } from "../../graphql/local.queries"; import AlertComponent from "../alert/alert.component"; +import SignOut from "../sign-out/sign-out.component"; export default function CurrentUserDropdown() { const { t } = useTranslation(); @@ -23,6 +24,9 @@ export default function CurrentUserDropdown() { }; const menu = ( + + + {t("menus.currentuser.profile")} @@ -59,7 +63,7 @@ export default function CurrentUserDropdown() { - {currentUser?.displayName ?? t("general.labels.unknown")} + {currentUser?.displayName || t("general.labels.unknown")} diff --git a/client/src/components/header/header.component.jsx b/client/src/components/header/header.component.jsx index 052543a23..d5f942178 100644 --- a/client/src/components/header/header.component.jsx +++ b/client/src/components/header/header.component.jsx @@ -1,13 +1,12 @@ +import { useApolloClient } from "@apollo/react-hooks"; +import { Col, Icon, Menu, Row } from "antd"; import React from "react"; import { Link } from "react-router-dom"; -import { useApolloClient } from "@apollo/react-hooks"; -import { Menu, Icon, Row, Col } from "antd"; +import CurrentUserDropdown from "../current-user-dropdown/current-user-dropdown.component"; +import GlobalSearch from "../global-search/global-search.component"; +import ManageSignInButton from "../manage-sign-in-button/manage-sign-in-button.component"; import "./header.styles.scss"; -import SignOut from "../sign-out/sign-out.component"; -import ManageSignInButton from "../manage-sign-in-button/manage-sign-in-button.component"; -import GlobalSearch from "../global-search/global-search.component"; -import CurrentUserDropdown from "../current-user-dropdown/current-user-dropdown.component"; export default ({ landingHeader, navItems, selectedNavItem }) => { const apolloClient = useApolloClient(); @@ -38,9 +37,7 @@ export default ({ landingHeader, navItems, selectedNavItem }) => { ))} {!landingHeader ? ( - - - + null ) : ( diff --git a/client/src/components/job-detail-cards/job-detail-cards.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.component.jsx index 1aff30402..5c900483d 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.component.jsx @@ -1,26 +1,24 @@ -import React, { useState } from "react"; -import { Link } from "react-router-dom"; -import { useTranslation } from "react-i18next"; import { useQuery } from "@apollo/react-hooks"; -import AlertComponent from "../alert/alert.component"; +import { Button, Icon, PageHeader, Tag } from "antd"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; import { QUERY_JOB_CARD_DETAILS } from "../../graphql/jobs.queries"; -import { PageHeader, Button, Descriptions, Tag, Icon } from "antd"; - +import AlertComponent from "../alert/alert.component"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import NoteUpsertModal from "../note-upsert-modal/note-upsert-modal.container"; //import JobDetailCardsHeaderComponent from "./job-detail-cards.header.component"; import JobDetailCardsCustomerComponent from "./job-detail-cards.customer.component"; -import JobDetailCardsVehicleComponent from "./job-detail-cards.vehicle.component"; -import JobDetailCardsInsuranceComponent from "./job-detail-cards.insurance.component"; -import JobDetailCardsDatesComponent from "./job-detail-cards.dates.component"; -import JobDetailCardsPartsComponent from "./job-detail-cards.parts.component"; -import JobDetailCardsNotesComponent from "./job-detail-cards.notes.component"; import JobDetailCardsDamageComponent from "./job-detail-cards.damage.component"; -import JobDetailCardsTotalsComponent from "./job-detail-cards.totals.component"; +import JobDetailCardsDatesComponent from "./job-detail-cards.dates.component"; import JobDetailCardsDocumentsComponent from "./job-detail-cards.documents.component"; -import LoadingSpinner from "../loading-spinner/loading-spinner.component"; - +import JobDetailCardsInsuranceComponent from "./job-detail-cards.insurance.component"; +import JobDetailCardsNotesComponent from "./job-detail-cards.notes.component"; +import JobDetailCardsPartsComponent from "./job-detail-cards.parts.component"; import "./job-detail-cards.styles.scss"; -import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component"; -import NoteUpsertModal from "../note-upsert-modal/note-upsert-modal.container"; +import JobDetailCardsTotalsComponent from "./job-detail-cards.totals.component"; + + export default function JobDetailCards({ selectedJob }) { const { loading, error, data, refetch } = useQuery(QUERY_JOB_CARD_DETAILS, { @@ -56,11 +54,17 @@ export default function JobDetailCards({ selectedJob }) { } title={ - loading - ? t("general.labels.loading") - : data.jobs_by_pk.ro_number - ? `${t("jobs.fields.ro_number")} ${data.jobs_by_pk.ro_number}` - : `${t("jobs.fields.est_number")} ${data.jobs_by_pk.est_number}` + loading ? ( + t("general.labels.loading") + ) : ( + + {data.jobs_by_pk.ro_number + ? `${t("jobs.fields.ro_number")} ${data.jobs_by_pk.ro_number}` + : `${t("jobs.fields.est_number")} ${ + data.jobs_by_pk.est_number + }`}{" "} + + ) } extra={[ ]}> - {loading ? ( - - ) : ( - - Lili Qu - 421421 - - 2017-01-10 - - - 2017-10-10 - - - Gonghu Road, Xihu District, Hangzhou, Zhejiang, China - - - )} + { + // loading ? ( + // + // ) : ( + // + // Lili Qu + // 421421 + // + // 2017-01-10 + // + // + // 2017-10-10 + // + // + // Gonghu Road, Xihu District, Hangzhou, Zhejiang, China + // + // + // ) + }
- + { + // + } + + extraLink={data && data.owner ? `/manage/owners/${data.owner.id}` : null}> {data ? ( -
{`${data?.ownr_fn ?? - ""} ${data.ownr_ln ?? ""}`}
+
{`${data.ownr_fn || ""} ${data.ownr_ln || ""}`}
- {`${data?.ownr_ph1 ?? ""}`} + {t("jobs.fields.phoneshort")}: + {`${data.ownr_ph1 || + t("general.labels.na")}`}
- {data?.ownr_ea ? ( - -
{`${data?.ownr_ea ?? ""}`}
-
- ) : null} - -
{`${data?.owner?.preferred_contact ?? ""}`}
+
+ {t("jobs.fields.ownr_ea")}: + {data.ownr_ea ? ( + + {`${data.ownr_ea || ""}`} + + ) : ( + t("general.labels.na") + )} +
+
{`${(data.owner && data.owner.preferred_contact) || ""}`}
+ {data.vehicle ? ( + + {`${data.vehicle.v_model_yr || ""} ${data.vehicle.v_make_desc || + ""} ${data.vehicle.v_model_desc || ""}`} + + ) : ( + {t("jobs.errors.novehicle")} + )}
) : null} diff --git a/client/src/components/job-detail-cards/job-detail-cards.dates.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.dates.component.jsx index d329d1f58..a6c17e793 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.dates.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.dates.component.jsx @@ -11,13 +11,112 @@ export default function JobDetailCardsDatesComponent({ loading, data }) { {data ? ( - - Actual In {data?.actual_in} - - - Scheduled Completion - {data?.scheduled_completion} - + {!( + data.actual_in || + data.scheduled_completion || + data.scheduled_in || + data.actual_completion || + data.scheduled_delivery || + data.actual_delivery || + data.date_estimated || + data.date_open || + data.date_scheduled || + data.date_invoiced || + data.date_closed || + data.date_exported + ) ? ( +
{t("jobs.errors.nodates")}
+ ) : null} + + {data.actual_in ? ( + + {t("jobs.fields.actual_in")} + {data.actual_in || ""} + + ) : null} + + {data.scheduled_completion ? ( + + {t("jobs.fields.scheduled_completion")} + + {data.scheduled_completion || ""} + + + ) : null} + + {data.scheduled_in ? ( + + {t("jobs.fields.scheduled_in")} + {data.scheduled_in || ""} + + ) : null} + + {data.actual_completion ? ( + + {t("jobs.fields.actual_completion")} + + {data.actual_completion || ""} + + + ) : null} + + {data.scheduled_delivery ? ( + + {t("jobs.fields.scheduled_delivery")} + + {data.scheduled_delivery || ""} + + + ) : null} + + {data.actual_delivery ? ( + + {t("jobs.fields.actual_delivery")} + {data.actual_delivery || ""} + + ) : null} + + {data.date_estimated ? ( + + {t("jobs.fields.date_estimated")} + {data.date_estimated || ""} + + ) : null} + + {data.date_open ? ( + + {t("jobs.fields.date_open")} + {data.date_open || ""} + + ) : null} + + {data.date_scheduled ? ( + + {t("jobs.fields.date_scheduled")} + {data.date_scheduled || ""} + + ) : null} + + {data.date_invoiced ? ( + + {t("jobs.fields.date_invoiced")} + {data.date_invoiced || ""} + + ) : null} + + {data.date_closed ? ( + + {t("jobs.fields.date_closed")} + {data.date_closed || ""} + + ) : null} + + {data.date_exported ? ( + + {t("jobs.fields.date_exported")} + {data.date_exported || ""} + + ) : null}
) : null}
diff --git a/client/src/components/job-detail-cards/job-detail-cards.documents.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.documents.component.jsx index d09d4f241..d6b57316f 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.documents.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.documents.component.jsx @@ -1,17 +1,35 @@ +import { Carousel } from "antd"; import React from "react"; import { useTranslation } from "react-i18next"; +import "./job-detail-cards.styles.scss"; import CardTemplate from "./job-detail-cards.template.component"; export default function JobDetailCardsDocumentsComponent({ loading, data }) { const { t } = useTranslation(); + if (!data) + return ( + + null + + ); + return ( - - {data ? ( - - Documents stuff here. - - ) : null} + + {data.documents.count > 0 ? ( + + {data.documents.map(item => ( +
+ {item.name} +
+ ))} +
+ ) : ( +
{t("documents.errors.nodocuments")}
+ )}
); } diff --git a/client/src/components/job-detail-cards/job-detail-cards.documents.styles.scss b/client/src/components/job-detail-cards/job-detail-cards.documents.styles.scss new file mode 100644 index 000000000..d6df79a10 --- /dev/null +++ b/client/src/components/job-detail-cards/job-detail-cards.documents.styles.scss @@ -0,0 +1,11 @@ +.ant-carousel .slick-slide { + text-align: center; + height: 160px; + line-height: 160px; + background: #364d79; + overflow: hidden; + } + + .ant-carousel .slick-slide h3 { + color: #fff; + } \ No newline at end of file diff --git a/client/src/components/job-detail-cards/job-detail-cards.insurance.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.insurance.component.jsx index 5dd73988c..54602f2d8 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.insurance.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.insurance.component.jsx @@ -10,16 +10,16 @@ export default function JobDetailCardsInsuranceComponent({ loading, data }) { {data ? ( -
{data?.ins_co_nm ?? t("general.labels.unknown")}
-
{data?.clm_no ?? t("general.labels.unknown")}
+
{data?.ins_co_nm || t("general.labels.unknown")}
+
{data?.clm_no || t("general.labels.unknown")}
{t("jobs.labels.cards.filehandler")} {data?.ins_ea ? ( -
{`${data?.ins_ct_fn ?? ""} ${data?.ins_ct_ln ?? ""}`}
+
{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}
) : ( -
{`${data?.ins_ct_fn ?? ""} ${data?.ins_ct_ln ?? ""}`}
+
{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}
)} {data?.ins_ph1 ? ( {data?.ins_ph1} @@ -31,10 +31,10 @@ export default function JobDetailCardsInsuranceComponent({ loading, data }) { {t("jobs.labels.cards.appraiser")} {data?.est_ea ? ( -
{`${data?.ins_ct_fn ?? ""} ${data?.ins_ct_ln ?? ""}`}
+
{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}
) : ( -
{`${data?.ins_ct_fn ?? ""} ${data?.ins_ct_ln ?? ""}`}
+
{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}
)}
@@ -42,10 +42,10 @@ export default function JobDetailCardsInsuranceComponent({ loading, data }) { {t("jobs.labels.cards.estimator")} {data?.est_ea ? ( -
{`${data?.est_ct_fn ?? ""} ${data?.est_ct_ln ?? ""}`}
+
{`${data?.est_ct_fn || ""} ${data?.est_ct_ln || ""}`}
) : ( -
{`${data?.est_ct_fn ?? ""} ${data?.est_ct_ln ?? ""}`}
+
{`${data?.est_ct_fn || ""} ${data?.est_ct_ln || ""}`}
)} {data?.est_ph1 ? ( {data?.est_ph1} diff --git a/client/src/components/job-detail-cards/job-detail-cards.vehicle.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.vehicle.component.jsx index ed58b3f81..3cf89b0ed 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.vehicle.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.vehicle.component.jsx @@ -13,9 +13,9 @@ export default function JobDetailCardsVehicleComponent({ loading, data }) { > {data ? ( - {data.vehicle?.v_model_yr ?? t("general.labels.na")}{" "} - {data.vehicle?.v_make_desc ?? t("general.labels.na")}{" "} - {data.vehicle?.v_model_desc ?? t("general.labels.na")} + {data.vehicle?.v_model_yr || t("general.labels.na")}{" "} + {data.vehicle?.v_make_desc || t("general.labels.na")}{" "} + {data.vehicle?.v_model_desc || t("general.labels.na")} ) : null}
diff --git a/client/src/components/job-tombstone/job-tombstone.component.jsx b/client/src/components/job-tombstone/job-tombstone.component.jsx index 2f8b4b69d..0bb478743 100644 --- a/client/src/components/job-tombstone/job-tombstone.component.jsx +++ b/client/src/components/job-tombstone/job-tombstone.component.jsx @@ -91,9 +91,9 @@ function JobTombstone({ job, ...otherProps }) { title={tombstoneTitle} subTitle={ jobContext.owner - ? (jobContext.owner?.first_name ?? "") + + ? (jobContext.owner?.first_name || "") + " " + - (jobContext.owner?.last_name ?? "") + (jobContext.owner?.last_name || "") : t("jobs.errors.noowner") } tags={ @@ -124,7 +124,7 @@ function JobTombstone({ job, ...otherProps }) { }); }); }}> - {t("jobs.labels.convert")} + {t("jobs.actions.convert")} , + +

+ +

+

+ Click or drag file to this area to upload +

+

+ Support for a single or bulk upload. Strictly prohibit from uploading + company data or other band files +

+
+ + example + + + ); +} +export default JobsDocumentsComponent; diff --git a/client/src/components/jobs-documents/jobs-documents.container.jsx b/client/src/components/jobs-documents/jobs-documents.container.jsx index 2576b0ce7..32aedb3f5 100644 --- a/client/src/components/jobs-documents/jobs-documents.container.jsx +++ b/client/src/components/jobs-documents/jobs-documents.container.jsx @@ -4,7 +4,8 @@ import { QUERY_SHOP_ID } from "../../graphql/bodyshop.queries"; import { GET_DOCUMENTS_BY_JOB } from "../../graphql/documents.queries"; import AlertComponent from "../alert/alert.component"; import LoadingSpinner from "../loading-spinner/loading-spinner.component"; -import JobDocuments from "./jobs-documents.page"; +import JobDocuments from "./jobs-documents.component"; +import { GET_CURRENT_USER } from "../../graphql/local.queries"; export default function JobsDocumentsContainer({ jobId }) { const { loading, error, data } = useQuery(GET_DOCUMENTS_BY_JOB, { @@ -16,15 +17,22 @@ export default function JobsDocumentsContainer({ jobId }) { fetchPolicy: "network-only" }); - if (loading || shopData.loading) return ; - if (error) return ; - if (shopData.error) - return ; + const user = useQuery(GET_CURRENT_USER); + + if (loading || shopData.loading || user.loading) return ; + if (error || shopData.error || user.error) + return ( + + ); return ( { - const reader = new FileReader(); - reader.readAsDataURL(file); - reader.onload = () => resolve(reader.result); - reader.onerror = error => reject(error); - }); -} - -function JobsDocumentsComponent({ shopId, jobId, loading, data }) { - const { t } = useTranslation(); - const [insertNewDocument] = useMutation(INSERT_NEW_DOCUMENT); - - const [state, setState] = useState({ - previewVisible: false, - previewImage: "" - }); - - const [fileList, setFileList] = useState( - data.reduce((acc, value) => { - acc.push({ - uid: value.id, - url: value.url, - name: value.name, - status: "done", - thumUrl: - "https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png" - }); - return acc; - }, []) - ); - - const handleUpload = ev => { - const { onError, onSuccess, onProgress } = ev; - - Resizer.imageFileResizer( - ev.file, - 3000, - 3000, - "JPEG", - 75, - 0, - uri => { - let file = new File([uri], ev.file.name, {}); - file.uid = ev.file.uid; - // Split the filename to get the name and type - let fileName = file.name; - let fileType = file.type; - let key = `${shopId}/${jobId}/${fileName}`; - //URL is using the proxy set in pacakges.json. - axios - .post("/sign_s3", { - fileName: key, - fileType - }) - .then(response => { - var returnData = response.data.data.returnData; - var signedRequest = returnData.signedRequest; - var url = returnData.url; - setState({ ...state, url: url }); - // Put the fileType in the headers for the upload - var options = { - headers: { - "Content-Type": fileType - }, - onUploadProgress: e => { - onProgress({ percent: (e.loaded / e.total) * 100 }); - } - }; - - axios - .put(signedRequest, file, options) - .then(response => { - onSuccess(response.body); - insertNewDocument({ - variables: { - docInput: [ - { - jobid: jobId, - uploaded_by: "patrick@bodyshop.app", - url, - thumb_url: url - } - ] - } - }).then(r => { - console.log(r); - notification["success"]({ - message: t("documents.successes.insert") - }); - }); - - setState({ ...state, success: true }); - }) - .catch(error => { - console.log("Error uploading to S3", error); - onError(error); - notification["error"]({ - message: t("documents.errors.insert") + JSON.stringify(error) - }); - }); - }) - .catch(error => { - console.log("Outside Error here.", error); - notification["error"]({ - message: - t("documents.errors.getpresignurl") + JSON.stringify(error) - }); - }); - }, - "blob" - ); - }; - - const handleCancel = () => setState({ ...state, previewVisible: false }); - - const handlePreview = async file => { - if (!file.url && !file.preview) { - file.preview = await getBase64(file.originFileObj); - } - - setState({ - ...state, - previewImage: file.url || file.preview, - previewVisible: true - }); - }; - const handleChange = props => { - const { fileList } = props; - console.log("New fileList", fileList); - setFileList(fileList); - }; - - const { previewVisible, previewImage } = state; - // const uploadButton = ( - //
- // - //
{t("documents.labels.upload")}
- //
- // ); - - console.log( - "process.env.REACT_APP_S3_BUCKET", - process.env.REACT_APP_S3_BUCKET - ); - const imageRequest = JSON.stringify({ - bucket: process.env.REACT_APP_S3_BUCKET, - key: - "52b7357c-0edd-4c95-85c3-dfdbcdfad9ac/f11e92a4-8a7d-4ec0-86ac-2f46b631e438/thumb-1920-459857.jpg", - edits: { - resize: { - height: 100, - width: 100 - } - } - }); - const CloudFrontUrl = "https://d18fc493a0fm4o.cloudfront.net"; - const url = `${CloudFrontUrl}/${btoa(imageRequest)}`; - - return ( -
- - test - -

- -

-

- Click or drag file to this area to upload -

-

- Support for a single or bulk upload. Strictly prohibit from uploading - company data or other band files -

-
- - example - -
- ); -} -export default JobsDocumentsComponent; diff --git a/client/src/components/jobs-list/jobs-list.component.jsx b/client/src/components/jobs-list/jobs-list.component.jsx index bd32c43c9..f92279eee 100644 --- a/client/src/components/jobs-list/jobs-list.component.jsx +++ b/client/src/components/jobs-list/jobs-list.component.jsx @@ -34,7 +34,7 @@ export default withRouter(function JobsList({ render: (text, record) => ( - {record.ro_number ? record.ro_number : t("general.labels.na")} + {record.ro_number ? record.ro_number : "EST-" + record.est_number} ) @@ -91,7 +91,7 @@ export default withRouter(function JobsList({ sortOrder: state.sortedInfo.columnKey === "status" && state.sortedInfo.order, render: (text, record) => { - return record.job_status?.name ?? t("general.labels.na"); + return record.job_status?.name || t("general.labels.na"); } }, @@ -202,7 +202,9 @@ export default withRouter(function JobsList({ return ( console.log(value)} + onSearch={value => { + console.log(value); + }} enterButton /> ); diff --git a/client/src/components/sign-out/sign-out.component.jsx b/client/src/components/sign-out/sign-out.component.jsx index 5b8b31203..9e995d819 100644 --- a/client/src/components/sign-out/sign-out.component.jsx +++ b/client/src/components/sign-out/sign-out.component.jsx @@ -1,12 +1,9 @@ -import React, { Component } from "react"; -//import { Redirect } from "react-router-dom"; +import React from "react"; +import { useTranslation } from "react-i18next"; import firebase from "../../firebase/firebase.utils"; -export default class SignOut extends Component { - state = { - redirect: false - }; - signOut = async () => { +export default function SignoutComponent() { + const signOut = async () => { try { await firebase.auth().signOut(); // this.setState({ @@ -17,17 +14,7 @@ export default class SignOut extends Component { } }; - renderRedirect = () => { - if (this.state.redirect) { - //return ; - } - }; - render() { - return ( -
- {this.renderRedirect()} -
Sign Out
-
- ); - } + const { t } = useTranslation(); + + return
{t("user.actions.signout")}
; } diff --git a/client/src/components/white-board-card/white-board-card.component.jsx b/client/src/components/white-board-card/white-board-card.component.jsx index e5367c085..393878f8f 100644 --- a/client/src/components/white-board-card/white-board-card.component.jsx +++ b/client/src/components/white-board-card/white-board-card.component.jsx @@ -63,11 +63,11 @@ export default function WhiteBoardCard({ metadata }) {
- {metadata.vehicle?.v_model_yr ?? t("general.labels.na")}{" "} - {metadata.vehicle?.v_make_desc ?? t("general.labels.na")}{" "} - {metadata.vehicle?.v_model_desc ?? t("general.labels.na")} + {metadata.vehicle?.v_model_yr || t("general.labels.na")}{" "} + {metadata.vehicle?.v_make_desc || t("general.labels.na")}{" "} + {metadata.vehicle?.v_model_desc || t("general.labels.na")} {metadata.vehicle?.v_vin ? ( - VIN: {metadata.vehicle?.v_vin ?? t("general.labels.na")} + VIN: {metadata.vehicle?.v_vin || t("general.labels.na")} ) : null} diff --git a/client/src/graphql/apollo-error-handling.js b/client/src/graphql/apollo-error-handling.js index 322164f9a..6b5b74677 100644 --- a/client/src/graphql/apollo-error-handling.js +++ b/client/src/graphql/apollo-error-handling.js @@ -1,14 +1,14 @@ import { onError } from "apollo-link-error"; -import { Observable } from "apollo-link"; +//import { Observable } from "apollo-link"; import { auth } from "../firebase/firebase.utils"; //https://stackoverflow.com/questions/57163454/refreshing-a-token-with-apollo-client-firebase-auth const errorLink = onError( ({ graphQLErrors, networkError, operation, forward }) => { let access_token = window.localStorage.getItem("token"); - console.log("graphQLErrors", graphQLErrors); - console.log("networkError", networkError); - console.log("operation", operation); - console.log("forward", forward); + // console.log("graphQLErrors", graphQLErrors); + // console.log("networkError", networkError); + // console.log("operation", operation); + // console.log("forward", forward); let expired = false; @@ -28,42 +28,56 @@ const errorLink = onError( console.log("We need a new token!"); if (access_token && access_token !== "undefined") { // Let's refresh token through async request - return new Observable(observer => { - auth.currentUser - .getIdToken(true) - .then(function(idToken) { - if (!idToken) { - window.localStorage.removeItem("token"); - return console.log("Refresh token has expired"); + + auth.currentUser.getIdToken(true).then(token => { + if (token) { + window.localStorage.setItem("token", token); + operation.setContext(({ headers = {} }) => ({ + headers: { + ...headers, + authorization: token ? `Bearer ${token}` : "" } - console.log("Got a new token", idToken); - window.localStorage.setItem("token", idToken); - - // reset the headers - operation.setContext(({ headers = {} }) => ({ - headers: { - // Re-add old headers - ...headers, - // Switch out old access token for new one - authorization: idToken ? `Bearer ${idToken}` : "" - } - })); - - const subscriber = { - next: observer.next.bind(observer), - error: observer.error.bind(observer), - complete: observer.complete.bind(observer) - }; - console.log("About to resend the request."); - // Retry last failed request - forward(operation).subscribe(subscriber); - }) - .catch(error => { - // No refresh or client token available, we force user to login - console.log("Hit an error."); - observer.error(error); - }); + })); + return forward(operation); + } }); + + // return new Observable(observer => { + // auth.currentUser + // .getIdToken(true) + // .then(function(idToken) { + // if (!idToken) { + // window.localStorage.removeItem("token"); + // return console.log("Refresh token has expired"); + // } + // console.log("Got a new token", idToken); + // window.localStorage.setItem("token", idToken); + + // // reset the headers + // operation.setContext(({ headers = {} }) => ({ + // headers: { + // // Re-add old headers + // ...headers, + // // Switch out old access token for new one + // authorization: idToken ? `Bearer ${idToken}` : "" + // } + // })); + + // const subscriber = { + // next: observer.next.bind(observer), + // error: observer.error.bind(observer), + // complete: observer.complete.bind(observer) + // }; + // console.log("About to resend the request."); + // // Retry last failed request + // forward(operation).subscribe(subscriber); + // }) + // .catch(error => { + // // No refresh or client token available, we force user to login + // console.log("Hit an error."); + // observer.error(error); + // }); + // }); } } } diff --git a/client/src/graphql/documents.queries.js b/client/src/graphql/documents.queries.js index 5a2cc937d..58c22a411 100644 --- a/client/src/graphql/documents.queries.js +++ b/client/src/graphql/documents.queries.js @@ -7,6 +7,7 @@ export const GET_DOCUMENTS_BY_JOB = gql` url thumb_url name + key } } `; @@ -14,6 +15,20 @@ export const GET_DOCUMENTS_BY_JOB = gql` export const INSERT_NEW_DOCUMENT = gql` mutation INSERT_NEW_DOCUMENT($docInput: [documents_insert_input!]!) { insert_documents(objects: $docInput) { + returning { + id + url + thumb_url + name + key + } + } + } +`; + +export const DELETE_DOCUMENT = gql` + mutation DELETE_DOCUMENT($id: uuid) { + delete_documents(where: { id: { _eq: $id } }) { returning { id } diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js index 9441ff3ee..c74240b52 100644 --- a/client/src/graphql/jobs.queries.js +++ b/client/src/graphql/jobs.queries.js @@ -246,6 +246,10 @@ export const QUERY_JOB_CARD_DETAILS = gql` updated_at claim_total ded_amt + documents(limit: 3, order_by: { created_at: desc }) { + id + thumb_url + } vehicle { id plate_no diff --git a/client/src/pages/jobs-detail/jobs-detail.page.jsx b/client/src/pages/jobs-detail/jobs-detail.page.jsx index ba9bfc3df..a87c8f93e 100644 --- a/client/src/pages/jobs-detail/jobs-detail.page.jsx +++ b/client/src/pages/jobs-detail/jobs-detail.page.jsx @@ -10,7 +10,6 @@ import JobNotesContainer from "../../components/jobs-notes/jobs-notes.container" function JobsDetailPage({ jobId, hash, data, match, history }) { const { t } = useTranslation(); - console.log("hash", hash); return (
diff --git a/client/src/pages/jobs/jobs.page.jsx b/client/src/pages/jobs/jobs.page.jsx index ee640a0e6..636a1010b 100644 --- a/client/src/pages/jobs/jobs.page.jsx +++ b/client/src/pages/jobs/jobs.page.jsx @@ -20,7 +20,6 @@ export default function JobsPage({ match, location }) { const { hash } = location; const [selectedJob, setSelectedJob] = useState(hash ? hash.substr(1) : null); - console.log("Jobs Page Render."); if (error) return ; return ( diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index 1fe0badc2..a657b41eb 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -2,13 +2,16 @@ "translation": { "documents": { "errors": { + "deletes3": "Error deleting document from storage. ", "getpresignurl": "Error obtaining presigned URL for document. ", - "insert": "Unable to upload file." + "insert": "Unable to upload file.", + "nodocuments": "There are no documents." }, "labels": { "upload": "Upload" }, "successes": { + "delete": "Document deleted successfully.", "insert": "Uploaded document successfully. " } }, @@ -31,11 +34,13 @@ "actions": { "addDocuments": "Add Job Documents", "addNote": "Add Note", + "convert": "Convert", "postInvoices": "Post Invoices", "printCenter": "Print Center" }, "errors": { "noaccess": "This job does not exist or you do not have access to it.", + "nodates": "No dates specified for this job.", "nojobselected": "No job is selected.", "noowner": "No owner associated.", "novehicle": "No vehicle associated.", @@ -44,15 +49,29 @@ "validationtitle": "Validation Error" }, "fields": { + "actual_completion": "Actual Completion", + "actual_delivery": "Actual Delivery", + "actual_in": "Actual In", "claim_total": "Claim Total", "clm_no": "Claim #", "clm_total": "Claim Total", + "date_closed": "Closed", + "date_estimated": "Date Estimated", + "date_exported": "Exported", + "date_invoiced": "Invoiced", + "date_open": "Open", + "date_scheduled": "Scheduled", "deductible": "Deductible", "est_number": "Estimate Number", "owner": "Owner", "owner_owing": "Cust. Owes", + "ownr_ea": "Email", "phone1": "Phone 1", + "phoneshort": "PH", "ro_number": "RO #", + "scheduled_completion": "Scheduled Completion", + "scheduled_delivery": "Scheduled Delivery", + "scheduled_in": "Scheduled In", "status": "Job Status", "vehicle": "Vehicle" }, @@ -62,7 +81,7 @@ "customer": "Customer Information", "damage": "Area of Damage", "dates": "Dates", - "documents": "Documents", + "documents": "Recent Documents", "estimator": "Estimator", "filehandler": "File Handler", "insurance": "Insurance Details", @@ -71,7 +90,6 @@ "totals": "Totals", "vehicle": "Vehicle" }, - "convert": "Convert", "documents": "Documents", "lines": "Estimate Lines", "notes": "Notes", @@ -130,6 +148,11 @@ "jobsdocuments": "Job Documents {{ro_number}} | $t(titles.app)", "profile": "My Profile | $t(titles.app)" }, + "user": { + "actions": { + "signout": "Sign Out" + } + }, "vehicles": { "fields": { "plate_no": "License Plate" diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 217435473..c102ca788 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -2,13 +2,16 @@ "translation": { "documents": { "errors": { + "deletes3": "Error al eliminar el documento del almacenamiento.", "getpresignurl": "Error al obtener la URL prescrita para el documento.", - "insert": "Incapaz de cargar el archivo." + "insert": "Incapaz de cargar el archivo.", + "nodocuments": "No hay documentos" }, "labels": { "upload": "Subir" }, "successes": { + "delete": "Documento eliminado con éxito.", "insert": "Documento cargado con éxito." } }, @@ -31,11 +34,13 @@ "actions": { "addDocuments": "Agregar documentos de trabajo", "addNote": "Añadir la nota", + "convert": "Convertir", "postInvoices": "Contabilizar facturas", "printCenter": "Centro de impresión" }, "errors": { "noaccess": "Este trabajo no existe o no tiene acceso a él.", + "nodates": "No hay fechas especificadas para este trabajo.", "nojobselected": "No hay trabajo seleccionado.", "noowner": "Ningún propietario asociado.", "novehicle": "No hay vehículo asociado.", @@ -44,15 +49,29 @@ "validationtitle": "Error de validacion" }, "fields": { + "actual_completion": "Realización real", + "actual_delivery": "Entrega real", + "actual_in": "Real en", "claim_total": "Reclamar total", "clm_no": "Reclamación #", "clm_total": "Reclamar total", + "date_closed": "Cerrado", + "date_estimated": "Fecha estimada", + "date_exported": "Exportado", + "date_invoiced": "Facturado", + "date_open": "Abierto", + "date_scheduled": "Programado", "deductible": "Deducible", "est_number": "Numero Estimado", "owner": "Propietario", "owner_owing": "Cust. Debe", + "ownr_ea": "Email", "phone1": "Teléfono 1", + "phoneshort": "PH", "ro_number": "RO #", + "scheduled_completion": "Finalización programada", + "scheduled_delivery": "Entrega programada", + "scheduled_in": "Programado en", "status": "Estado del trabajo", "vehicle": "Vehículo" }, @@ -62,7 +81,7 @@ "customer": "Información al cliente", "damage": "Área de Daño", "dates": "fechas", - "documents": "documentos", + "documents": "Documentos recientes", "estimator": "Estimador", "filehandler": "File Handler", "insurance": "detalles del seguro", @@ -71,7 +90,6 @@ "totals": "Totales", "vehicle": "Vehículo" }, - "convert": "Convertir", "documents": "documentos", "lines": "Líneas estimadas", "notes": "Notas", @@ -130,6 +148,11 @@ "jobsdocuments": "Documentos de trabajo {{ro_number}} | $ t (títulos.app)", "profile": "Mi perfil | $t(titles.app)" }, + "user": { + "actions": { + "signout": "desconectar" + } + }, "vehicles": { "fields": { "plate_no": "Placa" diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index a3bdce8aa..bca75b8ae 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -2,13 +2,16 @@ "translation": { "documents": { "errors": { + "deletes3": "Erreur lors de la suppression du document du stockage.", "getpresignurl": "Erreur lors de l'obtention de l'URL présignée pour le document.", - "insert": "Incapable de télécharger le fichier." + "insert": "Incapable de télécharger le fichier.", + "nodocuments": "Il n'y a pas de documents." }, "labels": { "upload": "Télécharger" }, "successes": { + "delete": "Le document a bien été supprimé.", "insert": "Document téléchargé avec succès." } }, @@ -31,11 +34,13 @@ "actions": { "addDocuments": "Ajouter des documents de travail", "addNote": "Ajouter une note", + "convert": "Convertir", "postInvoices": "Poster des factures", "printCenter": "Centre d'impression" }, "errors": { "noaccess": "Ce travail n'existe pas ou vous n'y avez pas accès.", + "nodates": "Aucune date spécifiée pour ce travail.", "nojobselected": "Aucun travail n'est sélectionné.", "noowner": "Aucun propriétaire associé.", "novehicle": "Aucun véhicule associé.", @@ -44,15 +49,29 @@ "validationtitle": "Erreur de validation" }, "fields": { + "actual_completion": "Achèvement réel", + "actual_delivery": "Livraison réelle", + "actual_in": "En réel", "claim_total": "Total réclamation", "clm_no": "Prétendre #", "clm_total": "Total réclamation", + "date_closed": "Fermé", + "date_estimated": "Date estimée", + "date_exported": "Exportés", + "date_invoiced": "Facturé", + "date_open": "Ouvrir", + "date_scheduled": "Prévu", "deductible": "Déductible", "est_number": "Numéro d'estimation", "owner": "Propriétaire", "owner_owing": "Cust. Owes", + "ownr_ea": "Email", "phone1": "Téléphone 1", + "phoneshort": "PH", "ro_number": "RO #", + "scheduled_completion": "Achèvement planifié", + "scheduled_delivery": "Livraison programmée", + "scheduled_in": "Planifié dans", "status": "Statut de l'emploi", "vehicle": "Véhicule" }, @@ -62,7 +81,7 @@ "customer": "Informations client", "damage": "Zone de dommages", "dates": "Rendez-vous", - "documents": "Les documents", + "documents": "Documents récents", "estimator": "Estimateur", "filehandler": "Gestionnaire de fichiers", "insurance": "Détails de l'assurance", @@ -71,7 +90,6 @@ "totals": "Totaux", "vehicle": "Véhicule" }, - "convert": "Convertir", "documents": "Les documents", "lines": "Estimer les lignes", "notes": "Remarques", @@ -130,6 +148,11 @@ "jobsdocuments": "Documents de travail {{ro_number}} | $ t (titres.app)", "profile": "Mon profil | $t(titles.app)" }, + "user": { + "actions": { + "signout": "Déconnexion" + } + }, "vehicles": { "fields": { "plate_no": "Plaque d'immatriculation" diff --git a/client/src/utils/DocHelpers.js b/client/src/utils/DocHelpers.js new file mode 100644 index 000000000..be8d28632 --- /dev/null +++ b/client/src/utils/DocHelpers.js @@ -0,0 +1,13 @@ +export const generateCdnThumb = key => { + const imageRequest = JSON.stringify({ + bucket: process.env.REACT_APP_S3_BUCKET, + key: key, + edits: { + resize: { + height: 100, + width: 100 + } + } + }); + return `${process.env.REACT_APP_S3_CDN}/${btoa(imageRequest)}`; +}; diff --git a/hasura/migrations/1579808199913_alter_table_public_documents_add_column_key/down.yaml b/hasura/migrations/1579808199913_alter_table_public_documents_add_column_key/down.yaml new file mode 100644 index 000000000..796bf37da --- /dev/null +++ b/hasura/migrations/1579808199913_alter_table_public_documents_add_column_key/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."documents" DROP COLUMN "key"; + type: run_sql diff --git a/hasura/migrations/1579808199913_alter_table_public_documents_add_column_key/up.yaml b/hasura/migrations/1579808199913_alter_table_public_documents_add_column_key/up.yaml new file mode 100644 index 000000000..7684d4abc --- /dev/null +++ b/hasura/migrations/1579808199913_alter_table_public_documents_add_column_key/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."documents" ADD COLUMN "key" text NOT NULL DEFAULT '0'; + type: run_sql diff --git a/hasura/migrations/1579808226020_update_permission_user_public_table_documents/down.yaml b/hasura/migrations/1579808226020_update_permission_user_public_table_documents/down.yaml new file mode 100644 index 000000000..727382dec --- /dev/null +++ b/hasura/migrations/1579808226020_update_permission_user_public_table_documents/down.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - name + - thumb_url + - uploaded_by + - url + - created_at + - updated_at + - id + - jobid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: documents + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1579808226020_update_permission_user_public_table_documents/up.yaml b/hasura/migrations/1579808226020_update_permission_user_public_table_documents/up.yaml new file mode 100644 index 000000000..2c0ca6648 --- /dev/null +++ b/hasura/migrations/1579808226020_update_permission_user_public_table_documents/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_insert_permission +- args: + permission: + check: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - created_at + - id + - jobid + - key + - name + - thumb_url + - updated_at + - uploaded_by + - url + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: documents + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1579808232227_update_permission_user_public_table_documents/down.yaml b/hasura/migrations/1579808232227_update_permission_user_public_table_documents/down.yaml new file mode 100644 index 000000000..18e6b72a5 --- /dev/null +++ b/hasura/migrations/1579808232227_update_permission_user_public_table_documents/down.yaml @@ -0,0 +1,34 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - name + - thumb_url + - uploaded_by + - url + - created_at + - updated_at + - id + - jobid + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: documents + schema: public + type: create_select_permission diff --git a/hasura/migrations/1579808232227_update_permission_user_public_table_documents/up.yaml b/hasura/migrations/1579808232227_update_permission_user_public_table_documents/up.yaml new file mode 100644 index 000000000..3d103eca5 --- /dev/null +++ b/hasura/migrations/1579808232227_update_permission_user_public_table_documents/up.yaml @@ -0,0 +1,35 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - created_at + - id + - jobid + - key + - name + - thumb_url + - updated_at + - uploaded_by + - url + computed_fields: [] + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: documents + schema: public + type: create_select_permission diff --git a/hasura/migrations/1579808237403_update_permission_user_public_table_documents/down.yaml b/hasura/migrations/1579808237403_update_permission_user_public_table_documents/down.yaml new file mode 100644 index 000000000..085d3dac8 --- /dev/null +++ b/hasura/migrations/1579808237403_update_permission_user_public_table_documents/down.yaml @@ -0,0 +1,36 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_update_permission +- args: + permission: + columns: + - name + - thumb_url + - uploaded_by + - url + - created_at + - updated_at + - id + - jobid + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: documents + schema: public + type: create_update_permission diff --git a/hasura/migrations/1579808237403_update_permission_user_public_table_documents/up.yaml b/hasura/migrations/1579808237403_update_permission_user_public_table_documents/up.yaml new file mode 100644 index 000000000..515730b23 --- /dev/null +++ b/hasura/migrations/1579808237403_update_permission_user_public_table_documents/up.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: documents + schema: public + type: drop_update_permission +- args: + permission: + columns: + - created_at + - id + - jobid + - key + - name + - thumb_url + - updated_at + - uploaded_by + - url + filter: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: documents + schema: public + type: create_update_permission diff --git a/hasura/migrations/1579818641451_enable_pg_trm/down.yaml b/hasura/migrations/1579818641451_enable_pg_trm/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1579818641451_enable_pg_trm/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1579818641451_enable_pg_trm/up.yaml b/hasura/migrations/1579818641451_enable_pg_trm/up.yaml new file mode 100644 index 000000000..501ce8467 --- /dev/null +++ b/hasura/migrations/1579818641451_enable_pg_trm/up.yaml @@ -0,0 +1,4 @@ +- args: + cascade: true + sql: "CREATE EXTENSION pg_trgm;\r\n" + type: run_sql diff --git a/hasura/migrations/1579819352860_create_gin_index_jobs/down.yaml b/hasura/migrations/1579819352860_create_gin_index_jobs/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1579819352860_create_gin_index_jobs/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1579819352860_create_gin_index_jobs/up.yaml b/hasura/migrations/1579819352860_create_gin_index_jobs/up.yaml new file mode 100644 index 000000000..17188248a --- /dev/null +++ b/hasura/migrations/1579819352860_create_gin_index_jobs/up.yaml @@ -0,0 +1,7 @@ +- args: + cascade: true + sql: "CREATE INDEX jobs_gin_idx ON jobs\r\nUSING GIN ((est_number || ' ' || ro_number + \ || ' ' || clm_no || ' ' || ownr_ln || ' ' || ownr_fn || ' ' || ownr_ph1 + \r\n|| ' ' || ownr_ea \r\n|| ' ' || insd_ln \r\n|| ' ' || insd_fn \r\n|| ' ' + || insd_ea \r\n|| ' ' || insd_ph1 ) gin_trgm_ops);" + type: run_sql diff --git a/hasura/migrations/1579819439525_search_jobs_function/down.yaml b/hasura/migrations/1579819439525_search_jobs_function/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1579819439525_search_jobs_function/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1579819439525_search_jobs_function/up.yaml b/hasura/migrations/1579819439525_search_jobs_function/up.yaml new file mode 100644 index 000000000..9639ba95c --- /dev/null +++ b/hasura/migrations/1579819439525_search_jobs_function/up.yaml @@ -0,0 +1,16 @@ +- args: + cascade: true + sql: "CREATE FUNCTION search_jobs(search text)\r\nRETURNS SETOF jobs AS $$\r\n + \ SELECT *\r\n FROM jobs\r\n WHERE\r\n search <% (est_number || + ' ' || ro_number || ' ' || clm_no || ' ' || ownr_ln || ' ' || ownr_fn || + ' ' || ownr_ph1 \r\n|| ' ' || ownr_ea \r\n|| ' ' || insd_ln \r\n|| ' ' || insd_fn + \r\n|| ' ' || insd_ea \r\n|| ' ' || insd_ph1 )\r\n ORDER BY\r\n similarity(search, + (est_number || ' ' || ro_number || ' ' || clm_no || ' ' || ownr_ln || ' + ' || ownr_fn || ' ' || ownr_ph1 \r\n|| ' ' || ownr_ea \r\n|| ' ' || insd_ln + \r\n|| ' ' || insd_fn \r\n|| ' ' || insd_ea \r\n|| ' ' || insd_ph1 )) DESC\r\n + \ LIMIT 50;\r\n$$ LANGUAGE sql STABLE;" + type: run_sql +- args: + name: search_jobs + schema: public + type: track_function diff --git a/hasura/migrations/1579820833038_run_sql_migration/down.yaml b/hasura/migrations/1579820833038_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1579820833038_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1579820833038_run_sql_migration/up.yaml b/hasura/migrations/1579820833038_run_sql_migration/up.yaml new file mode 100644 index 000000000..d6dc6c697 --- /dev/null +++ b/hasura/migrations/1579820833038_run_sql_migration/up.yaml @@ -0,0 +1,4 @@ +- args: + cascade: true + sql: 'drop index jobs_gin_idx ' + type: run_sql diff --git a/hasura/migrations/1579820853826_run_sql_migration/down.yaml b/hasura/migrations/1579820853826_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1579820853826_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1579820853826_run_sql_migration/up.yaml b/hasura/migrations/1579820853826_run_sql_migration/up.yaml new file mode 100644 index 000000000..984059595 --- /dev/null +++ b/hasura/migrations/1579820853826_run_sql_migration/up.yaml @@ -0,0 +1,4 @@ +- args: + cascade: true + sql: drop function search_jobs + type: run_sql diff --git a/hasura/migrations/1579821113991_new_jobs_index/down.yaml b/hasura/migrations/1579821113991_new_jobs_index/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1579821113991_new_jobs_index/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1579821113991_new_jobs_index/up.yaml b/hasura/migrations/1579821113991_new_jobs_index/up.yaml new file mode 100644 index 000000000..6e29d97d4 --- /dev/null +++ b/hasura/migrations/1579821113991_new_jobs_index/up.yaml @@ -0,0 +1,7 @@ +- args: + cascade: true + sql: CREATE INDEX jobs_search_idx ON jobs USING gin (est_number gin_trgm_ops, + ro_number gin_trgm_ops, clm_no gin_trgm_ops, ownr_ln gin_trgm_ops, ownr_fn gin_trgm_ops, + ownr_ph1 gin_trgm_ops, ownr_ea gin_trgm_ops, insd_ln gin_trgm_ops, insd_fn gin_trgm_ops, + insd_ea gin_trgm_ops, insd_ph1 gin_trgm_ops); + type: run_sql diff --git a/hasura/migrations/1579823064149_drop_index/down.yaml b/hasura/migrations/1579823064149_drop_index/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1579823064149_drop_index/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1579823064149_drop_index/up.yaml b/hasura/migrations/1579823064149_drop_index/up.yaml new file mode 100644 index 000000000..4f54ab178 --- /dev/null +++ b/hasura/migrations/1579823064149_drop_index/up.yaml @@ -0,0 +1,4 @@ +- args: + cascade: true + sql: 'drop INDEX jobs_search_idx ' + type: run_sql diff --git a/hasura/migrations/1579824162431_alter_table_public_jobs_add_column_search_idx_col/down.yaml b/hasura/migrations/1579824162431_alter_table_public_jobs_add_column_search_idx_col/down.yaml new file mode 100644 index 000000000..e62a6046e --- /dev/null +++ b/hasura/migrations/1579824162431_alter_table_public_jobs_add_column_search_idx_col/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" DROP COLUMN "search_idx_col"; + type: run_sql diff --git a/hasura/migrations/1579824162431_alter_table_public_jobs_add_column_search_idx_col/up.yaml b/hasura/migrations/1579824162431_alter_table_public_jobs_add_column_search_idx_col/up.yaml new file mode 100644 index 000000000..26b51996a --- /dev/null +++ b/hasura/migrations/1579824162431_alter_table_public_jobs_add_column_search_idx_col/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" ADD COLUMN "search_idx_col" tsvector NULL; + type: run_sql diff --git a/hasura/migrations/1579825076007_job_search_function/down.yaml b/hasura/migrations/1579825076007_job_search_function/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1579825076007_job_search_function/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1579825076007_job_search_function/up.yaml b/hasura/migrations/1579825076007_job_search_function/up.yaml new file mode 100644 index 000000000..70f68249e --- /dev/null +++ b/hasura/migrations/1579825076007_job_search_function/up.yaml @@ -0,0 +1,15 @@ +- args: + cascade: true + sql: "CREATE FUNCTION search_jobs(search text)\r\nRETURNS SETOF jobs AS $$\r\n + \ SELECT *\r\n FROM jobs\r\n WHERE\r\n ownr_fn ilike ('%' || search + || '%')\r\n OR ownr_ln ilike ('%' || search || '%')\r\n OR ro_number + ilike ('%' || search || '%')\r\n OR est_number ilike ('%' || search || + '%')\r\n OR clm_no ilike ('%' || search || '%')\r\n OR ownr_ph1 ilike + ('%' || search || '%')\r\n OR ownr_ea ilike ('%' || search || '%')\r\n + \ OR insd_ln ilike ('%' || search || '%')\r\n OR insd_fn ilike ('%' + || search || '%')\r\n$$ LANGUAGE sql STABLE;\r\n" + type: run_sql +- args: + name: search_jobs + schema: public + type: track_function diff --git a/hasura/migrations/1579825091344_alter_table_public_jobs_drop_column_search_idx_col/down.yaml b/hasura/migrations/1579825091344_alter_table_public_jobs_drop_column_search_idx_col/down.yaml new file mode 100644 index 000000000..969a340c5 --- /dev/null +++ b/hasura/migrations/1579825091344_alter_table_public_jobs_drop_column_search_idx_col/down.yaml @@ -0,0 +1,6 @@ +- args: + sql: ALTER TABLE "public"."jobs" ADD COLUMN "search_idx_col" tsvector + type: run_sql +- args: + sql: ALTER TABLE "public"."jobs" ALTER COLUMN "search_idx_col" DROP NOT NULL + type: run_sql diff --git a/hasura/migrations/1579825091344_alter_table_public_jobs_drop_column_search_idx_col/up.yaml b/hasura/migrations/1579825091344_alter_table_public_jobs_drop_column_search_idx_col/up.yaml new file mode 100644 index 000000000..ce1071e44 --- /dev/null +++ b/hasura/migrations/1579825091344_alter_table_public_jobs_drop_column_search_idx_col/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" DROP COLUMN "search_idx_col" CASCADE + type: run_sql diff --git a/hasura/migrations/1579828405600_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1579828405600_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..cdb202414 --- /dev/null +++ b/hasura/migrations/1579828405600_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,212 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - actual_completion + - actual_delivery + - actual_in + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - claim_total + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_number + - est_ph1 + - est_st + - est_zip + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - shopid + - state_tax_rate + - statusid + - theft_ind + - tlos_ind + - updated_at + - vehicleid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1579828405600_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1579828405600_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..802868c66 --- /dev/null +++ b/hasura/migrations/1579828405600_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,211 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - actual_completion + - actual_delivery + - actual_in + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - claim_total + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - shopid + - state_tax_rate + - statusid + - theft_ind + - tlos_ind + - updated_at + - vehicleid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1579828420568_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1579828420568_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..931e8b9ab --- /dev/null +++ b/hasura/migrations/1579828420568_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,210 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - actual_completion + - actual_delivery + - actual_in + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - claim_total + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_number + - est_ph1 + - est_st + - est_zip + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - shopid + - state_tax_rate + - statusid + - theft_ind + - tlos_ind + - updated_at + - vehicleid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1579828420568_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1579828420568_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..0a96c063d --- /dev/null +++ b/hasura/migrations/1579828420568_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,209 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - actual_completion + - actual_delivery + - actual_in + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - claim_total + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - shopid + - state_tax_rate + - statusid + - theft_ind + - tlos_ind + - updated_at + - vehicleid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1579828431423_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1579828431423_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..3945c7115 --- /dev/null +++ b/hasura/migrations/1579828431423_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,212 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - actual_completion + - actual_delivery + - actual_in + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - claim_total + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_number + - est_ph1 + - est_st + - est_zip + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - shopid + - state_tax_rate + - statusid + - theft_ind + - tlos_ind + - updated_at + - vehicleid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1579828431423_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1579828431423_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..a3b61010f --- /dev/null +++ b/hasura/migrations/1579828431423_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,211 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - actual_completion + - actual_delivery + - actual_in + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - claim_total + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - shopid + - state_tax_rate + - statusid + - theft_ind + - tlos_ind + - updated_at + - vehicleid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1579828444855_alter_table_public_jobs_drop_column_est_number/down.yaml b/hasura/migrations/1579828444855_alter_table_public_jobs_drop_column_est_number/down.yaml new file mode 100644 index 000000000..742d6cd31 --- /dev/null +++ b/hasura/migrations/1579828444855_alter_table_public_jobs_drop_column_est_number/down.yaml @@ -0,0 +1,6 @@ +- args: + sql: ALTER TABLE "public"."jobs" ADD COLUMN "est_number" text + type: run_sql +- args: + sql: ALTER TABLE "public"."jobs" ALTER COLUMN "est_number" DROP NOT NULL + type: run_sql diff --git a/hasura/migrations/1579828444855_alter_table_public_jobs_drop_column_est_number/up.yaml b/hasura/migrations/1579828444855_alter_table_public_jobs_drop_column_est_number/up.yaml new file mode 100644 index 000000000..0a7b343e7 --- /dev/null +++ b/hasura/migrations/1579828444855_alter_table_public_jobs_drop_column_est_number/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" DROP COLUMN "est_number" CASCADE + type: run_sql diff --git a/hasura/migrations/1579828512176_alter_table_public_jobs_add_column_est_number/down.yaml b/hasura/migrations/1579828512176_alter_table_public_jobs_add_column_est_number/down.yaml new file mode 100644 index 000000000..10b08cae0 --- /dev/null +++ b/hasura/migrations/1579828512176_alter_table_public_jobs_add_column_est_number/down.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" DROP COLUMN "est_number"; + type: run_sql diff --git a/hasura/migrations/1579828512176_alter_table_public_jobs_add_column_est_number/up.yaml b/hasura/migrations/1579828512176_alter_table_public_jobs_add_column_est_number/up.yaml new file mode 100644 index 000000000..1c6632831 --- /dev/null +++ b/hasura/migrations/1579828512176_alter_table_public_jobs_add_column_est_number/up.yaml @@ -0,0 +1,3 @@ +- args: + sql: ALTER TABLE "public"."jobs" ADD COLUMN "est_number" bigserial NOT NULL; + type: run_sql diff --git a/hasura/migrations/1579828599348_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1579828599348_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..802868c66 --- /dev/null +++ b/hasura/migrations/1579828599348_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,211 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - actual_completion + - actual_delivery + - actual_in + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - claim_total + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - shopid + - state_tax_rate + - statusid + - theft_ind + - tlos_ind + - updated_at + - vehicleid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1579828599348_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1579828599348_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..cdb202414 --- /dev/null +++ b/hasura/migrations/1579828599348_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,212 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_insert_permission +- args: + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - actual_completion + - actual_delivery + - actual_in + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - claim_total + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_number + - est_ph1 + - est_st + - est_zip + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - shopid + - state_tax_rate + - statusid + - theft_ind + - tlos_ind + - updated_at + - vehicleid + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1579828619557_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1579828619557_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..0a96c063d --- /dev/null +++ b/hasura/migrations/1579828619557_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,209 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - actual_completion + - actual_delivery + - actual_in + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - claim_total + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - shopid + - state_tax_rate + - statusid + - theft_ind + - tlos_ind + - updated_at + - vehicleid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1579828619557_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1579828619557_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..915f8c6b9 --- /dev/null +++ b/hasura/migrations/1579828619557_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,210 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - converted + - inproduction + - asgn_date + - invoice_date + - loss_date + - pay_date + - est_number + - area_of_damage + - claim_total + - clm_total + - ded_amt + - deductible + - federal_tax_rate + - local_tax_rate + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - regie_number + - ro_number + - theft_ind + - tlos_ind + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + computed_fields: [] + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: jobs + schema: public + type: create_select_permission diff --git a/hasura/migrations/1579828627607_update_permission_user_public_table_jobs/down.yaml b/hasura/migrations/1579828627607_update_permission_user_public_table_jobs/down.yaml new file mode 100644 index 000000000..a3b61010f --- /dev/null +++ b/hasura/migrations/1579828627607_update_permission_user_public_table_jobs/down.yaml @@ -0,0 +1,211 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - actual_completion + - actual_delivery + - actual_in + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - area_of_damage + - asgn_date + - asgn_no + - asgn_type + - cat_no + - ciecaid + - claim_total + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_total + - clm_zip + - converted + - created_at + - cust_pr + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - ded_amt + - ded_status + - deductible + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - federal_tax_rate + - id + - inproduction + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - invoice_date + - labor_rate_desc + - labor_rate_id + - local_tax_rate + - loss_cat + - loss_date + - loss_desc + - loss_type + - owner_owing + - ownerid + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_amt + - pay_chknm + - pay_date + - pay_type + - payee_nms + - policy_no + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - regie_number + - ro_number + - scheduled_completion + - scheduled_delivery + - scheduled_in + - shopid + - state_tax_rate + - statusid + - theft_ind + - tlos_ind + - updated_at + - vehicleid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/hasura/migrations/1579828627607_update_permission_user_public_table_jobs/up.yaml b/hasura/migrations/1579828627607_update_permission_user_public_table_jobs/up.yaml new file mode 100644 index 000000000..a1c550dec --- /dev/null +++ b/hasura/migrations/1579828627607_update_permission_user_public_table_jobs/up.yaml @@ -0,0 +1,212 @@ +- args: + role: user + table: + name: jobs + schema: public + type: drop_update_permission +- args: + permission: + columns: + - converted + - inproduction + - asgn_date + - invoice_date + - loss_date + - pay_date + - est_number + - area_of_damage + - claim_total + - clm_total + - ded_amt + - deductible + - federal_tax_rate + - local_tax_rate + - owner_owing + - pay_amt + - rate_atp + - rate_la1 + - rate_la2 + - rate_la3 + - rate_la4 + - rate_lab + - rate_lad + - rate_lae + - rate_laf + - rate_lag + - rate_lam + - rate_lar + - rate_las + - rate_lau + - rate_ma2s + - rate_ma2t + - rate_ma3s + - rate_mabl + - rate_macs + - rate_mahw + - rate_mapa + - rate_mash + - rate_matd + - state_tax_rate + - agt_addr1 + - agt_addr2 + - agt_city + - agt_co_id + - agt_co_nm + - agt_ct_fn + - agt_ct_ln + - agt_ct_ph + - agt_ct_phx + - agt_ctry + - agt_ea + - agt_fax + - agt_faxx + - agt_lic_no + - agt_ph1 + - agt_ph1x + - agt_ph2 + - agt_ph2x + - agt_st + - agt_zip + - asgn_no + - asgn_type + - cat_no + - ciecaid + - clm_addr1 + - clm_addr2 + - clm_city + - clm_ct_fn + - clm_ct_ln + - clm_ct_ph + - clm_ct_phx + - clm_ctry + - clm_ea + - clm_fax + - clm_faxx + - clm_no + - clm_ofc_id + - clm_ofc_nm + - clm_ph1 + - clm_ph1x + - clm_ph2 + - clm_ph2x + - clm_st + - clm_title + - clm_zip + - cust_pr + - ded_status + - est_addr1 + - est_addr2 + - est_city + - est_co_nm + - est_ct_fn + - est_ct_ln + - est_ctry + - est_ea + - est_ph1 + - est_st + - est_zip + - ins_addr1 + - ins_addr2 + - ins_city + - ins_co_id + - ins_co_nm + - ins_ct_fn + - ins_ct_ln + - ins_ct_ph + - ins_ct_phx + - ins_ctry + - insd_addr1 + - insd_addr2 + - insd_city + - insd_co_nm + - insd_ctry + - insd_ea + - insd_fax + - insd_faxx + - insd_fn + - insd_ln + - insd_ph1 + - insd_ph1x + - insd_ph2 + - insd_ph2x + - insd_st + - insd_title + - insd_zip + - ins_ea + - ins_fax + - ins_faxx + - ins_memo + - ins_ph1 + - ins_ph1x + - ins_ph2 + - ins_ph2x + - ins_st + - ins_title + - ins_zip + - labor_rate_desc + - labor_rate_id + - loss_cat + - loss_desc + - loss_type + - ownr_addr1 + - ownr_addr2 + - ownr_city + - ownr_co_nm + - ownr_ctry + - ownr_ea + - ownr_fax + - ownr_faxx + - ownr_fn + - ownr_ln + - ownr_ph1 + - ownr_ph1x + - ownr_ph2 + - ownr_ph2x + - ownr_st + - ownr_title + - ownr_zip + - pay_chknm + - payee_nms + - pay_type + - policy_no + - regie_number + - ro_number + - theft_ind + - tlos_ind + - actual_completion + - actual_delivery + - actual_in + - created_at + - date_closed + - date_estimated + - date_exported + - date_invoiced + - date_open + - date_scheduled + - scheduled_completion + - scheduled_delivery + - scheduled_in + - updated_at + - id + - ownerid + - shopid + - statusid + - vehicleid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: jobs + schema: public + type: create_update_permission diff --git a/s3upload.js b/s3upload.js index c5e5ad221..1091873b2 100644 --- a/s3upload.js +++ b/s3upload.js @@ -71,3 +71,25 @@ exports.get_s3 = (req, res) => { res.json({ success: true, data: { returnData } }); }); }; + +exports.delete_s3 = (req, res) => { + const s3 = new aws.S3(); // Create a new instance of S3 + const fileName = req.body.fileName; + //const fileType = req.body.fileType; + // Set up the payload of what we are sending to the S3 api + console.log("fileName", req.body); + const s3Params = { + Bucket: S3_BUCKET, + Key: fileName + }; + + s3.deleteObject(s3Params, function(err, data) { + if (err) { + res.json({ success: false, message: err.message }); + } + // error + else { + res.json({ success: true, data }); + } // deleted + }); +}; diff --git a/server.js b/server.js index 2648a0659..7acc0a49d 100644 --- a/server.js +++ b/server.js @@ -21,10 +21,11 @@ app.use(cors()); var s3upload = require("./s3upload"); app.post("/sign_s3", s3upload.sign_s3); app.get("/sign_s3", s3upload.get_s3); +app.post("/delete_s3", s3upload.delete_s3); -app.get("/test", function(req, res) { - res.json({ success: true }); -}); +// app.get("/test", function(req, res) { +// res.json({ success: true }); +// }); if (process.env.NODE_ENV === "production") { app.use(express.static(path.join(__dirname, "client/build")));