import React, { useState } from "react"; import { View, Text } from "react-native"; import axios from "axios"; import { connect } from "react-redux"; import { employeeGetRatesStart } from "../../redux/employee/employee.actions"; import { createStructuredSelector } from "reselect"; import { selectCurrentEmployee, selectRates, selectGettingRates, selectSignInError, } from "../../redux/employee/employee.selectors"; import { Button } from "react-native-paper"; //temp import { useQuery } from "@apollo/client"; import ErrorDisplay from "../error-display/error-display.component"; import { selectBodyshop } from "../../redux/user/user.selectors"; import { JobIdSearchSelect } from "../Selects/select-job-id"; import { CostCenterSelect } from "../Selects/select-cost-center"; import { selectCurrentTimeTicketJob, selectCurrentTimeTicketJobId, } from "../../redux/timetickets/timetickets.selectors"; import moment from "moment"; import { EmployeeClockedInList } from "../time-ticket-lists/employee-clockedin-list.component"; import { useNavigation } from "@react-navigation/native"; import { INSERT_NEW_TIME_TICKET } from "../../graphql/timetickets.queries"; import { useMutation } from "@apollo/client"; import { logImEXEvent } from "../../firebase/firebase.analytics"; const mapStateToProps = createStructuredSelector({ currentEmployee: selectCurrentEmployee, loaderGettingRates: selectGettingRates, signingError: selectSignInError, currentBodyshop: selectBodyshop, currentRatesNCostCenters: selectRates, currentSelectedTimeTicketJobId: selectCurrentTimeTicketJobId, currentSelectedTimeTicketJob: selectCurrentTimeTicketJob, }); const mapDispatchToProps = (dispatch) => ({ employeeGetRatesStart: (employeeId) => dispatch(employeeGetRatesStart(employeeId)), }); export function ScreenTimeTicketBrowser({ loaderGettingRates, currentEmployee, employeeGetRatesStart, signingError, currentBodyshop, currentRatesNCostCenters, currentSelectedTimeTicketJob, currentSelectedTimeTicketJobId, }) { const navigation = useNavigation(); //const employeeId = currentEmployee.technician.id; const [currentSCC, setCurrentSCC] = useState(null); const [currentSJobId, setCurrentSJobId] = useState(null); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [insertTimeTicket] = useMutation(INSERT_NEW_TIME_TICKET, { refetchQueries: ["QUERY_ACTIVE_TIME_TICKETS"], }); // const { error, data } = useQuery(QUERY_EMPLOYEE_BY_ID, { // variables: { id: currentEmployee.technician.id }, // }); // const signingErrorMsg = error ? () : null; // const signingErrorMsg = signingError ? () : null; // const wrapperSetCurrentSJobState = useCallback( // (val) => { // setCurrentSJobId(val); // }, // [setCurrentSJobId] // ); const handleFinish = async (values) => { console.log("handleFinish called in ScreenTimeTicketBrowser"); setLoading(true); setError(null); //do stuff... const theTime = (await axios.post("/utils/time")).data; if (!!currentSCC?.value && !!currentSJobId?.value) { setError(null); console.log("have all values"); } else { console.log("missing values!"); setLoading(false); setError({ message: "Please make sure all fields have a value." }); return; } if (currentSJobId) console.log("jobid or currentSJobId", currentSJobId?.value); const tempVariablesObj = { variables: { timeTicketInput: [ { bodyshopid: currentBodyshop.id, employeeid: currentEmployee?.technician?.id, date: moment(theTime).format("YYYY-MM-DD"), clockon: moment(theTime), jobid: currentSJobId?.value, cost_center: currentSCC?.value, ciecacode: currentBodyshop?.cdk_dealerid || currentBodyshop?.pbs_serialnumber ? currentSCC?.value : Object.keys( currentBodyshop.md_responsibility_centers.defaults.costs ).find((key) => { return ( currentBodyshop.md_responsibility_centers.defaults.costs[ key ] === currentSCC?.value ); }), }, ], }, }; console.info( "INSERT_NEW_TIME_TICKET, variables for clockin. : ", tempVariablesObj?.variables?.timeTicketInput[0] ); const result = await insertTimeTicket(tempVariablesObj); console.log("insertTimeTicket, result :", result); if (!!result.errors) { console.log("insertTimeTicket, result.error :", result.errors); setError(JSON.stringify(result.errors)); } else { console.log("insertTimeTicket, result. :", result.data); //show success //clear fields setCurrentSJobId(null); setCurrentSCC(null); } setLoading(false); }; return ( {error && error?.message ? ( ) : null} ); } export default connect( mapStateToProps, mapDispatchToProps )(ScreenTimeTicketBrowser);