import {gql, useMutation} from "@apollo/client"; import {Button, notification} from "antd"; import React, {useState} from "react"; import {useTranslation} from "react-i18next"; import {connect} from "react-redux"; import {createStructuredSelector} from "reselect"; import {selectAuthLevel, selectBodyshop, selectCurrentUser,} from "../../redux/user/user.selectors"; import {HasRbacAccess} from "../rbac-wrapper/rbac-wrapper.component"; import {INSERT_EXPORT_LOG} from "../../graphql/accounting.queries"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, authLevel: selectAuthLevel, currentUser: selectCurrentUser, }); const mapDispatchToProps = (dispatch) => ({ //setUserLanguage: language => dispatch(setUserLanguage(language)) }); export default connect( mapStateToProps, mapDispatchToProps )(BillMarkExportedButton); export function BillMarkExportedButton({ currentUser, bodyshop, authLevel, bill, }) { const {t} = useTranslation(); const [loading, setLoading] = useState(false); const [insertExportLog] = useMutation(INSERT_EXPORT_LOG); const [updateBill] = useMutation(gql` mutation UPDATE_BILL($billId: uuid!) { update_bills(where: { id: { _eq: $billId } }, _set: { exported: true }) { returning { id exported exported_at } } } `); const handleUpdate = async () => { setLoading(true); const result = await updateBill({ variables: {billId: bill.id}, }); await insertExportLog({ variables: { logs: [ { bodyshopid: bodyshop.id, billid: bill.id, successful: true, message: JSON.stringify([t("general.labels.markedexported")]), useremail: currentUser.email, }, ], }, }); if (!result.errors) { notification["success"]({ message: t("bills.successes.markexported"), }); } else { notification["error"]({ message: t("bills.errors.saving", { error: JSON.stringify(result.errors), }), }); } setLoading(false); //Get the owner details, populate it all back into the job. }; const hasAccess = HasRbacAccess({ bodyshop, authLevel, action: "bills:reexport", }); if (hasAccess) return ( ); return <>; }