import { useMutation } from "@apollo/client"; import { Button, Card, Col, Form, InputNumber, notification, Popover, Row, Select, } from "antd"; import axios from "axios"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { logImEXEvent } from "../../firebase/firebase.utils"; import { UPDATE_TIME_TICKET } from "../../graphql/timetickets.queries"; import { selectTechnician } from "../../redux/tech/tech.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors"; import TechJobClockoutDelete from "../tech-job-clock-out-delete/tech-job-clock-out-delete.component"; import { LaborAllocationContainer } from "../time-ticket-modal/time-ticket-modal.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, technician: selectTechnician, }); export function TechClockOffButton({ bodyshop, technician, jobId, timeTicketId, completedCallback, isShiftTicket, otherBtnProps, }) { const [loading, setLoading] = useState(false); const [updateTimeticket] = useMutation(UPDATE_TIME_TICKET); const [form] = Form.useForm(); const { t } = useTranslation(); const emps = bodyshop.employees.filter( (e) => e.id === (technician && technician.id) )[0]; const handleFinish = async (values) => { logImEXEvent("tech_clock_out_job"); setLoading(true); const result = await updateTimeticket({ variables: { timeticketId: timeTicketId, timeticket: { clockoff: (await axios.post("/utils/time")).data, ...values, }, }, }); if (!!result.errors) { notification["error"]({ message: t("timetickets.errors.clockingout", { message: JSON.stringify(result.errors), }), }); } else { notification["success"]({ message: t("timetickets.successes.clockedout"), }); } setLoading(false); if (completedCallback) completedCallback(); }; const overlay = (
{!isShiftTicket ? (
) : null} {!isShiftTicket && ( )}
); return ( ); } export default connect(mapStateToProps, null)(TechClockOffButton);