import { AlertFilled } from "@ant-design/icons"; import { Button, Divider, Dropdown, Menu, notification, Popover, Space, } from "antd"; import parsePhoneNumber from "libphonenumber-js"; import moment from "moment"; import queryString from "query-string"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { Link, useHistory, useLocation } from "react-router-dom"; import { createStructuredSelector } from "reselect"; import { openChatByPhone, setMessage, } from "../../redux/messaging/messaging.actions"; import { setModalContext } from "../../redux/modals/modals.actions"; import { selectBodyshop } from "../../redux/user/user.selectors"; import CurrencyFormatter from "../../utils/CurrencyFormatter"; import { GenerateDocument } from "../../utils/RenderTemplate"; import { TemplateList } from "../../utils/TemplateConstants"; import ChatOpenButton from "../chat-open-button/chat-open-button.component"; import DataLabel from "../data-label/data-label.component"; import ScheduleAtChange from "./job-at-change.component"; import ScheduleEventColor from "./schedule-event.color.component"; import ScheduleEventNote from "./schedule-event.note.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, }); const mapDispatchToProps = (dispatch) => ({ setScheduleContext: (context) => dispatch(setModalContext({ context: context, modal: "schedule" })), openChatByPhone: (phone) => dispatch(openChatByPhone(phone)), setMessage: (text) => dispatch(setMessage(text)), }); export function ScheduleEventComponent({ bodyshop, setMessage, openChatByPhone, event, refetch, handleCancel, setScheduleContext, }) { const { t } = useTranslation(); const [visible, setVisible] = useState(false); const history = useHistory(); const searchParams = queryString.parse(useLocation().search); const blockContent = (
); const popoverContent = (
{!event.isintake ? ( {event.title} ) : ( {`${(event.job && event.job.ownr_fn) || ""} ${ (event.job && event.job.ownr_ln) || "" }`} {`${(event.job && event.job.v_model_yr) || ""} ${ (event.job && event.job.v_make_desc) || "" } ${(event.job && event.job.v_model_desc) || ""}`} )} {event.job ? (
{(event.job && event.job.ro_number) || ""} {(event.job && event.job.clm_total) || ""} {(event.job && event.job.ins_co_nm) || ""} {(event.job && event.job.clm_no) || ""} {(event.job && event.job.ownr_ea) || ""} {(event.job && event.job.alt_transport) || ""}
) : null} {event.job ? ( ) : null} {event.job ? ( ) : null} { const Template = TemplateList("job").appointment_reminder; GenerateDocument( { name: Template.key, variables: { id: event.job.id }, }, { to: event.job && event.job.ownr_ea, subject: Template.subject, }, "e", event.job && event.job.id ); }} disabled={event.arrived} > {t("general.labels.email")} { const p = parsePhoneNumber(event.job.ownr_ph1, "CA"); if (p && p.isValid()) { openChatByPhone({ phone_num: p.formatInternational(), jobid: event.job.id, }); setMessage( t("appointments.labels.reminder", { shopname: bodyshop.shopname, date: moment(event.start).format("MM/DD/YYYY"), time: moment(event.start).format("HH:MM a"), }) ); setVisible(false); } else { notification["error"]({ message: t("messaging.error.invalidphone"), }); } }} disabled={event.arrived || !bodyshop.messagingservicesid} > {t("general.labels.sms")} } > {event.isintake ? ( ) : null}
); const RegularEvent = event.isintake ? (
{event.note && } {`${event.job.ro_number || t("general.labels.na")}`} {`${(event.job && event.job.ownr_fn) || ""} ${ (event.job && event.job.ownr_ln) || "" } ${(event.job && event.job.ownr_co_nm) || ""}`} {`${(event.job && event.job.v_model_yr) || ""} ${ (event.job && event.job.v_make_desc) || "" } ${(event.job && event.job.v_model_desc) || ""}`} {`(${ (event.job && event.job.labhrs.aggregate.sum.mod_lb_hrs) || "0" } / ${ (event.job && event.job.larhrs.aggregate.sum.mod_lb_hrs) || "0" })`} {event.job && event.job.alt_transport && (
{event.job.alt_transport}
)}
) : (
{`${event.title || ""}`}
); return ( setVisible(vis)} trigger="click" content={event.block ? blockContent : popoverContent} style={{ height: "100%", width: "100%" }} > {RegularEvent} ); } export default connect( mapStateToProps, mapDispatchToProps )(ScheduleEventComponent);