Files
bodyshop/client/src/pages/contract-create/contract-create.page.container.jsx

72 lines
2.2 KiB
JavaScript

import React, { useEffect, useState } from "react";
import ContractCreatePageComponent from "./contract-create.page.component";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors";
import { Form, notification } from "antd";
import { useTranslation } from "react-i18next";
import { INSERT_NEW_CONTRACT } from "../../graphql/cccontracts.queries";
import { useMutation } from "@apollo/react-hooks";
import { useHistory } from "react-router-dom";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
});
export function ContractCreatePageContainer({ bodyshop }) {
const [form] = Form.useForm();
const { t } = useTranslation();
const selectedCarState = useState(null);
const selectedJobState = useState(null);
const [insertContract] = useMutation(INSERT_NEW_CONTRACT);
const history = useHistory();
const handleFinish = values => {
if (!!selectedCarState[0] && !!selectedJobState[0]) {
insertContract({
variables: {
contract: {
...values,
courtesycarid: selectedCarState[0],
jobid: selectedJobState[0]
}
}
})
.then(response => {
notification["success"]({
message: t("contracts.successes.saved")
});
history.push(
`/manage/courtesycars/contracts/${response.data.insert_cccontracts.returning[0].id}`
);
})
.catch(error =>
notification["error"]({
message: t("contracts.errors.saving", {
error: JSON.stringify(error)
})
})
);
} else {
notification["error"]({
message: t("contracts.errors.selectjobandcar")
});
}
};
useEffect(() => {
document.title = t("titles.contracts-create");
}, [t]);
return (
<Form form={form} autoComplete="no" onFinish={handleFinish}>
<ContractCreatePageComponent
selectedJobState={selectedJobState}
selectedCarState={selectedCarState}
/>
</Form>
);
}
export default connect(mapStateToProps, null)(ContractCreatePageContainer);