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 ( ); }