import { useMutation, useQuery } from "@apollo/react-hooks";
import React, { useEffect } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import AlertComponent from "../../components/alert/alert.component";
import SpinComponent from "../../components/loading-spinner/loading-spinner.component";
import NotFound from "../../components/not-found/not-found.component";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import { GET_JOB_BY_PK, UPDATE_JOB } from "../../graphql/jobs.queries";
import {
addRecentItem,
setBreadcrumbs,
setJobReadOnly,
setSelectedHeader,
} from "../../redux/application/application.actions";
import { CreateRecentItem } from "../../utils/create-recent-item";
import JobsDetailPage from "./jobs-detail.page.component";
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
addRecentItem: (item) => dispatch(addRecentItem(item)),
setSelectedHeader: (key) => dispatch(setSelectedHeader(key)),
setJobReadOnly: (bool) => dispatch(setJobReadOnly(bool)),
});
function JobsDetailPageContainer({
match,
setBreadcrumbs,
addRecentItem,
setSelectedHeader,
setJobReadOnly,
}) {
const { jobId } = match.params;
const { t } = useTranslation();
const { loading, error, data, refetch } = useQuery(GET_JOB_BY_PK, {
variables: { id: jobId },
fetchPolicy: "network-only",
});
const [mutationUpdateJob] = useMutation(UPDATE_JOB);
useEffect(() => {
setSelectedHeader("activejobs");
document.title = loading
? t("titles.app")
: error
? t("titles.app")
: t("titles.jobsdetail", {
ro_number:
data.jobs_by_pk && data.jobs_by_pk.converted
? data.jobs_by_pk && data.jobs_by_pk.ro_number
: `EST ${data.jobs_by_pk && data.jobs_by_pk.est_number}`,
});
setBreadcrumbs([
{ link: "/manage/jobs", label: t("titles.bc.jobs") },
{
link: `/manage/jobs/${jobId}`,
label: t("titles.bc.jobs-detail", {
number:
(data &&
data.jobs_by_pk &&
(data.jobs_by_pk && data.jobs_by_pk.converted
? data && data.jobs_by_pk && data.jobs_by_pk.ro_number
: `EST ${data.jobs_by_pk && data.jobs_by_pk.est_number}`)) ||
"",
}),
},
]);
if (data && data.jobs_by_pk) {
setJobReadOnly(!!data.jobs_by_pk.date_exported);
addRecentItem(
CreateRecentItem(
jobId,
"job",
`${
data.jobs_by_pk.ro_number
? data.jobs_by_pk.ro_number
: data.jobs_by_pk.est_number
} | ${data.jobs_by_pk.ownr_fn || ""} ${
data.jobs_by_pk.ownr_ln || ""
} ${data.jobs_by_pk.ownr_co_nm || ""}`,
`/manage/jobs/${jobId}`
)
);
}
}, [
loading,
data,
t,
error,
setBreadcrumbs,
jobId,
addRecentItem,
setSelectedHeader,
setJobReadOnly,
]);
if (loading) return ;
if (error) return ;
if (!!!data.jobs_by_pk) return ;
return data.jobs_by_pk ? (
) : (
);
}
export default connect(null, mapDispatchToProps)(JobsDetailPageContainer);