//import {useMutation, useQuery } from "@apollo/client"; import { Button, Form, Layout, Result, Typography } from "antd"; import axios from "axios"; import React, { useCallback, useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { useParams } from "react-router-dom"; import { createStructuredSelector } from "reselect"; import AlertComponent from "../../components/alert/alert.component"; import ConfigFormComponents from "../../components/config-form-components/config-form-components.component"; import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component"; import { selectCurrentUser } from "../../redux/user/user.selectors"; import { DateTimeFormat } from "./../../utils/DateFormatter"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; const mapStateToProps = createStructuredSelector({ currentUser: selectCurrentUser }); const mapDispatchToProps = (dispatch) => ({}); export default connect(mapStateToProps, mapDispatchToProps)(CsiContainerPage); export function CsiContainerPage({ currentUser }) { const { surveyId } = useParams(); const [form] = Form.useForm(); const [axiosResponse, setAxiosResponse] = useState(null); const [submitting, setSubmitting] = useState({ loading: false, submitted: false }); const { t } = useTranslation(); const getAxiosData = useCallback(async () => { try { try { window.$crisp.push(["do", "chat:hide"]); } catch { console.log("Unable to attach to crisp instance. "); } setSubmitting((prevSubmitting) => ({ ...prevSubmitting, loading: true })); const response = await axios.post("/csi/lookup", { surveyId }); setSubmitting((prevSubmitting) => ({ ...prevSubmitting, loading: false })); setAxiosResponse(response.data); } catch (error) { console.error(`Something went wrong...: ${error.message}`); console.dir({ stack: error?.stack, message: error?.message }); } }, [setAxiosResponse, surveyId]); useEffect(() => { getAxiosData().catch((err) => console.error(`Something went wrong fetching axios data: ${err.message || ""}`)); }, [getAxiosData]); // Return if authorized if (currentUser && currentUser.authorized) { return ( ); } if (submitting.loading) return ; const handleFinish = async (values) => { try { setSubmitting({ ...submitting, loading: true, submitting: true }); const result = await axios.post("/csi/submit", { surveyId, values }); console.log("result", result); if (!!!result.errors && result.data.update_csi.affected_rows > 0) { setSubmitting({ ...submitting, loading: false, submitted: true }); } } catch (error) { console.error(`Something went wrong...: ${error.message}`); console.dir({ stack: error?.stack, message: error?.message }); } }; if (!axiosResponse || axiosResponse.csi_by_pk === null) { // Do something here , this is where you would return a loading box or something return ( <>
{t("csi.labels.copyright")} {t("csi.fields.surveyid", { surveyId: surveyId })}
); } else { const { relateddata: { bodyshop, job }, csiquestion: { config: csiquestions } } = axiosResponse.csi_by_pk; return (
{bodyshop.logo_img_path && bodyshop.logo_img_path.src ? ( {bodyshop.shopname.concat("Logo")} ) : null}
{bodyshop.shopname || ""} {`${bodyshop.address1 || ""}${bodyshop.address2 ? ", " : ""}${bodyshop.address2 || ""}`.trim()} {`${bodyshop.city || ""}${ bodyshop.city && bodyshop.state ? ", " : "" }${bodyshop.state || ""} ${bodyshop.zip_post || ""}`.trim()}
{t("csi.labels.title")} {t("csi.labels.greeting", { name: job.ownr_co_nm || job.ownr_fn || "" })} {t("csi.labels.intro", { shopname: bodyshop.shopname || "" })}
{submitting.error ? : null} {submitting.submitted ? ( ) : (
{axiosResponse.csi_by_pk.valid ? ( <> ) : ( <> {t("csi.successes.submittedsub")} )}
)} {t("csi.labels.copyright")} {t("csi.fields.surveyid", { surveyId: surveyId })}
); } }