79 lines
2.7 KiB
JavaScript
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}
|
|
/>
|
|
);
|
|
}
|