Add date_lost_sale to track date sale was lost, add in Audit Trail for both cancel and insertion of schedule, standardize date format on output.
79 lines
2.3 KiB
JavaScript
79 lines
2.3 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),
|
|
})
|
|
);
|
|
}
|
|
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}
|
|
/>
|
|
);
|
|
}
|