import { useMutation } from "@apollo/client"; import { Button, Form, Space, notification } from "antd"; import axios from "axios"; import moment from "moment"; import React, { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { INSERT_NEW_TIME_TICKET } from "../../graphql/timetickets.queries"; import { selectTechnician } from "../../redux/tech/tech.selectors"; import { selectBodyshop, selectCurrentUser, } from "../../redux/user/user.selectors"; import TechJobPrintTickets from "../tech-job-print-tickets/tech-job-print-tickets.component"; import TimeTicektShiftComponent from "./time-ticket-shift-form.component"; const mapStateToProps = createStructuredSelector({ currentUser: selectCurrentUser, bodyshop: selectBodyshop, technician: selectTechnician, }); const mapDispatchToProps = (dispatch) => ({ //setUserLanguage: language => dispatch(setUserLanguage(language)) }); export function TimeTicektShiftContainer({ bodyshop, technician, currentUser, isTechConsole, checkIfAlreadyClocked, }) { console.log( "🚀 ~ file: time-ticket-shift-form.container.jsx:28 ~ technician:", technician ); const [form] = Form.useForm(); const [insertTimeTicket] = useMutation(INSERT_NEW_TIME_TICKET); const { t } = useTranslation(); const [loading, setLoading] = useState(false); const employeeId = useMemo(() => { const assoc = bodyshop.associations.filter( (a) => a.useremail === currentUser.email )[0]; return assoc && assoc.user && assoc.user.employee && assoc.user.employee.id; }, [bodyshop, currentUser.email]); const handleFinish = async (values) => { setLoading(true); const alreadyClocked = await checkIfAlreadyClocked(); if (alreadyClocked) { //Show the error. notification["error"]({ message: t("timetickets.errors.shiftalreadyclockedon"), }); } else { const theTime = moment((await axios.post("/utils/time")).data); const result = await insertTimeTicket({ variables: { timeTicketInput: [ { bodyshopid: bodyshop.id, employeeid: isTechConsole ? technician.id : employeeId, cost_center: "timetickets.labels.shift", clockon: theTime, date: theTime, memo: values.memo, created_by: isTechConsole ? currentUser.email.concat( " | ", technician.employee_number .concat( " ", technician.first_name, " ", technician.last_name ) .trim() ) : currentUser.displayName ? currentUser.email.concat(" | ", currentUser.displayName) : currentUser.email, }, ], }, awaitRefetchQueries: true, refetchQueries: ["QUERY_ACTIVE_SHIFT_TIME_TICKETS"], }); if (!!result.errors) { notification["error"]({ message: t("timetickets.errors.clockingin", { message: JSON.stringify(result.errors), }), }); } else { notification["success"]({ message: t("timetickets.successes.clockedin"), }); } } setLoading(false); }; return (
{isTechConsole === true ? ( ) : null}
); } export default connect( mapStateToProps, mapDispatchToProps )(TimeTicektShiftContainer);