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 { insertAuditTrail } from "../../redux/application/application.actions"; import { selectBodyshop, selectCurrentUser, } from "../../redux/user/user.selectors"; import AuditTrailMapping from "../../utils/AuditTrailMappings"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, currentUser: selectCurrentUser, }); const mapDispatchToProps = (dispatch) => ({ insertAuditTrail: ({ jobid, operation }) => dispatch(insertAuditTrail({ jobid, operation })), }); export default connect(mapStateToProps, mapDispatchToProps)(JobsAdminUnvoid); export function JobsAdminUnvoid({ insertAuditTrail, bodyshop, job, currentUser, }) { const { t } = useTranslation(); const [loading, setLoading] = useState(false); const [updateJob] = useMutation(gql` mutation UNVOID_JOB($jobId: uuid!) { update_jobs_by_pk(pk_columns: {id: $jobId}, _set: {voided: false, status: "${ bodyshop.md_ro_statuses.default_imported }"}) { id voided status } insert_notes(objects: {jobid: $jobId, audit: true, created_by: "${ currentUser.email }", text: "${t("jobs.labels.unvoidnote")}"}) { returning { id } } } `); // const result = await voidJob({ // variables: { // jobId: job.id, // job: { // status: bodyshop.md_ro_statuses.default_void, // voided: true, // }, // note: [ // { // jobid: job.id, // created_by: currentUser.email, // audit: true, // text: t("jobs.labels.voidnote", { // date: moment().format("MM/DD/yyy"), // time: moment().format("hh:mm a"), // }), // }, // ], // }, // }); // if (!!!result.errors) { // notification["success"]({ // message: t("jobs.successes.voided"), // }); // //go back to jobs list. // history.push(`/manage/`); // } else { // notification["error"]({ // message: t("jobs.errors.voiding", { // error: JSON.stringify(result.errors), // }), // }); // } const handleUpdate = async (values) => { setLoading(true); const result = await updateJob({ variables: { jobId: job.id }, }); if (!result.errors) { notification["success"]({ message: t("jobs.successes.save") }); insertAuditTrail({ jobid: job.id, operation: AuditTrailMapping.admin_unvoicejob(), }); } else { notification["error"]({ message: t("jobs.errors.saving", { error: JSON.stringify(result.errors), }), }); } setLoading(false); //Get the owner details, populate it all back into the job. }; return ( ); }