import { gql, useMutation } from "@apollo/client"; import { Button, notification, Popconfirm } from "antd"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { INSERT_EXPORT_LOG } from "../../graphql/accounting.queries"; import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, currentUser: selectCurrentUser }); const mapDispatchToProps = (dispatch) => ({ //setUserLanguage: language => dispatch(setUserLanguage(language)) }); export default connect(mapStateToProps, mapDispatchToProps)(BillMarkSelectedExported); export function BillMarkSelectedExported({ bodyshop, currentUser, billids, disabled, loadingCallback, completedCallback, refetch }) { const { t } = useTranslation(); const [loading, setLoading] = useState(false); const [open, setOpen] = useState(false); const [insertExportLog] = useMutation(INSERT_EXPORT_LOG); const [updateBill] = useMutation(gql` mutation UPDATE_BILL($billIds: [uuid!]!) { update_bills(where: { id: { _in: $billIds } }, _set: { exported: true }) { returning { id exported exported_at } } } `); const handleUpdate = async () => { setLoading(true); loadingCallback(true); const result = await updateBill({ variables: { billIds: billids }, update(cache) {} }); await insertExportLog({ variables: { logs: billids.map((id) => { return { bodyshopid: bodyshop.id, billid: 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) }) }); } loadingCallback(false); completedCallback && completedCallback([]); setLoading(false); refetch && refetch(); setOpen(false); }; return ( setOpen(false)} onConfirm={handleUpdate} disabled={disabled} > ); }