Files
imexmobile/components/screen-time-ticket-browser/screen-time-ticket-browser.component.jsx
2023-05-13 13:56:44 -04:00

171 lines
6.0 KiB
JavaScript

import React, { useCallback, useEffect, 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";
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 employeeId = currentEmployee.technician.id;
const [currentSCC, setCurrentSCC] = useState(null);
// const [currentSJob, setCurrentSJob] = useState(null);
const [currentSJobId, setCurrentSJobId] = useState(null);
// const { error, data } = useQuery(QUERY_EMPLOYEE_BY_ID, {
// variables: { id: currentEmployee.technician.id },
// });
// const signingErrorMsg = error ? (<ErrorDisplay errorMessage={error.message} />) : null;
// const signingErrorMsg = signingError ? (<ErrorDisplay errorMessage={signingError} />) : null;
// const wrapperSetCurrentSJobState = useCallback(
// (val) => {
// setCurrentSJobId(val);
// },
// [setCurrentSJobId]
// );
const getRates = (currentEmployee) => {
employeeGetRatesStart(currentEmployee.technician.id);
};
const createTheTimeTicketOBJ = async (
currentEmployee,
currentBodyshop,
currentSCC,
currentSJobId
) => {
const theTime = (await axios.post("/utils/time")).data;
if (currentBodyshop) console.log("bodyshopid", currentBodyshop?.id);
if (currentEmployee) console.log("employeeid", currentEmployee?.technician.id);
if (theTime) console.log("date", moment(theTime).format("YYYY-MM-DD"));
// if (currentSJob) console.log("currentSJob", currentSJob?.value);
if (currentSJobId) console.log("jobid or currentSJobId", currentSJobId?.value);
if (currentSCC) console.log("cost_center or currentSCC", currentSCC?.value);
//if(currentBodyshop)console.log(currentBodyshop);
if (currentBodyshop)
console.log(
"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
);
})
);
if (currentEmployee)
console.log("flat_rate", currentEmployee?.technician?.flat_rate);
if (currentSCC) console.log("rate or currentSCC", currentSCC?.rate);
// const temp = {
// timeTicketInput: [
// {
//have bodyshopid: currentBodyshop?.id,
//have employeeid: currentEmployee?.technician?.id,
//have date: "2023-05-11", //moment(theTime).format("YYYY-MM-DD"),
// //clockon: moment(theTime),
// jobid: "temp",//values.jobid,
//have cost_center: "temp",//values.cost_center,
//have ciecacode: currentBodyshop?.cdk_dealerid || currentBodyshop?.pbs_serialnumber
// ? values.cost_center
// : Object.keys(currentBodyshop.md_responsibility_centers.defaults.costs).find((key) => {
// return (currentBodyshop.md_responsibility_centers.defaults.costs[key] === "temp");//values.cost_center);
// }),
//have flat_rate: currentEmployee.technician.flat_rate,
//have rate: 1,
// },
// ],
// };
// console.log(temp);
//employeeGetRatesStart(currentEmployee.technician.id);
};
return (
<View>
<Text>Time Ticket List goes here</Text>
<Button
mode="outlined"
loading={loaderGettingRates}
//onPress={() => getRates(currentEmployee)}
onPress={() =>
createTheTimeTicketOBJ(currentEmployee, currentBodyshop, currentSCC, currentSJobId)
}
>
<Text>text here</Text>
</Button>
{/* {signingErrorMsg} */}
<JobIdSearchSelect
currentValue={currentSJobId}
onJobSelected={setCurrentSJobId}
convertedOnly={!currentBodyshop.tt_allow_post_to_invoiced}
notExported={!currentBodyshop.tt_allow_post_to_invoiced}
/>
<CostCenterSelect
currentValue={currentSCC}
currentRatesNCostCenters={currentRatesNCostCenters}
onValueSelected={setCurrentSCC}
/>
<Button
mode="outlined"
//loading={loaderClockIn}
//onPress={() => clockIn()}
>
<Text>Clock In</Text>
</Button>
<EmployeeClockedInList technician={currentEmployee} />
</View>
);
}
export default connect(
mapStateToProps,
mapDispatchToProps
)(ScreenTimeTicketBrowser);