Files
bodyshop/client/src/components/job-at-change/schedule-event.container.jsx
2024-03-11 09:50:20 -04:00

79 lines
2.7 KiB
JavaScript

import {useMutation} from "@apollo/client";
import {notification} from "antd";
import React from "react";
import {useTranslation} from "react-i18next";
import {useDispatch} from "react-redux";
import {logImEXEvent} from "../../firebase/firebase.utils";
import {CANCEL_APPOINTMENT_BY_ID} from "../../graphql/appointments.queries";
import {UPDATE_JOB} from "../../graphql/jobs.queries";
import {insertAuditTrail} from "../../redux/application/application.actions";
import AuditTrailMapping from "../../utils/AuditTrailMappings";
import ScheduleEventComponent from "./schedule-event.component";
export default function ScheduleEventContainer({bodyshop, event, refetch}) {
const dispatch = useDispatch();
const {t} = useTranslation();
const [cancelAppointment] = useMutation(CANCEL_APPOINTMENT_BY_ID);
const [updateJob] = useMutation(UPDATE_JOB);
const handleCancel = async ({id, lost_sale_reason}) => {
logImEXEvent("schedule_cancel_appt");
const cancelAppt = await cancelAppointment({
variables: {appid: event.id},
});
notification["success"]({
message: t("appointments.successes.canceled"),
});
if (!!cancelAppt.errors) {
notification["error"]({
message: t("appointments.errors.canceling", {
message: JSON.stringify(cancelAppt.errors),
}),
});
return;
}
if (event.job) {
const jobUpdate = await updateJob({
variables: {
jobId: event.job.id,
job: {
date_scheduled: null,
scheduled_in: null,
scheduled_completion: null,
lost_sale_reason,
date_lost_sale: new Date(),
status: bodyshop.md_ro_statuses.default_imported,
},
},
});
if (!jobUpdate.errors) {
dispatch(
insertAuditTrail({
jobid: event.job.id,
operation: AuditTrailMapping.appointmentcancel(lost_sale_reason),
type: "appointmentcancel",})
);
}
if (!!jobUpdate.errors) {
notification["error"]({
message: t("jobs.errors.updating", {
message: JSON.stringify(jobUpdate.errors),
}),
});
return;
}
}
if (refetch) refetch();
};
return (
<ScheduleEventComponent
event={event}
refetch={refetch}
handleCancel={handleCancel}
/>
);
}