diff --git a/components/screen-ap-time-ticket-list/screen-time-ticket-browser.component.jsx b/components/screen-ap-time-ticket-list/screen-time-ticket-browser.component.jsx index 94e308c..dfc966a 100644 --- a/components/screen-ap-time-ticket-list/screen-time-ticket-browser.component.jsx +++ b/components/screen-ap-time-ticket-list/screen-time-ticket-browser.component.jsx @@ -1,11 +1,54 @@ import React from "react"; import { View, Text } from "react-native"; -export default function ScreenTimeTicketBrowser() { +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"; + +const mapStateToProps = createStructuredSelector({ + currentEmployee: selectCurrentEmployee, + theRates: selectRates, + loaderGettingRates: selectGettingRates, + signingError: selectSignInError, +}); + +const mapDispatchToProps = (dispatch) => ({ + employeeGetRatesStart: (employeeId) => + dispatch(employeeGetRatesStart({employeeId})), +}); + +export function ScreenTimeTicketBrowser({ + loaderGettingRates, + currentEmployee, + employeeGetRatesStart, + signingError +}) { + + + const getRates = (currentEmployee) => { + employeeGetRatesStart(currentEmployee.technician.id); + }; + return ( Time Ticket List goes here - + + {signingError && signingError} ); } + +export default connect(mapStateToProps, mapDispatchToProps)(ScreenTimeTicketBrowser); \ No newline at end of file diff --git a/components/time-ticket/screen-time-ticket-create.component.jsx b/components/time-ticket/screen-time-ticket-create.component.jsx index 416b145..720c09f 100644 --- a/components/time-ticket/screen-time-ticket-create.component.jsx +++ b/components/time-ticket/screen-time-ticket-create.component.jsx @@ -16,8 +16,9 @@ import DateTimePickerModal from "react-native-modal-datetime-picker"; const mapStateToProps = createStructuredSelector({ currentEmployee: selectCurrentEmployee, }); +const mapDispatchToProps = (dispatch) => ({}) -export function TimeTicketCreate() { +export function TimeTicketCreate({currentEmployee}) { const [isDatePickerVisible, setDatePickerVisibility] = useState(false); const [date2, setDate2] = useState(new Date()); @@ -47,7 +48,7 @@ export function TimeTicketCreate() { initialValues={{ jobid: "", ticketdate: date2.toLocaleDateString(), - employee: "", + employee: currentEmployee.technician.first_name, costcenter: "", productivehours: "", actualhours: "", @@ -139,7 +140,7 @@ export function TimeTicketCreate() { ); } -export default connect(null, null)(TimeTicketCreate); +export default connect(mapStateToProps, null)(TimeTicketCreate); const localStyles = StyleSheet.create({ content: { diff --git a/redux/employee/employee.sagas.js b/redux/employee/employee.sagas.js index 85642fd..84c7529 100644 --- a/redux/employee/employee.sagas.js +++ b/redux/employee/employee.sagas.js @@ -3,11 +3,16 @@ import { employeeSignInStart, employeeSignInSuccess, employeeSignInFailure, + employeeGetRatesStart, + employeeGetRatesSuccess, + employeeGetRatesFailure + } from "./employee.actions"; import { all, call, put, select, takeLatest } from "redux-saga/effects"; import { logImEXEvent } from "../../firebase/firebase.analytics"; import { selectBodyshop } from "../user/user.selectors"; import axios from "axios"; +import { client } from "../../graphql/client"; export function* onSignInEmployeeStart() { yield takeLatest( @@ -17,9 +22,9 @@ export function* onSignInEmployeeStart() { } export function* signInWithEmployeeId({ payload: { employeeId, pin } }) { try { - logImEXEvent("redux_sign_in_employee_attempt"); + logImEXEvent("redux_sign_in_employee_attempt"); //console.loging - console.log("Saga", employeeId, pin, pin); + // console.log("Saga", employeeId, pin, pin); const bodyshop = yield select(selectBodyshop); const response = yield call(axios.post, "/tech/login", { shopid: bodyshop.id, @@ -38,6 +43,34 @@ export function* signInWithEmployeeId({ payload: { employeeId, pin } }) { } } -export function* employeeSagas() { - yield all([call(onSignInEmployeeStart)]); +export function* onEmployeeGetRatesStart() { + yield takeLatest( + EmployeeActionTypes.EMPLOYEE_GET_RATES_START, + getRatesWithEmployeeId + ); +} +export function* getRatesWithEmployeeId({ payload }) { + try { + const response = yield client.query({ query: QUERY_EMPLOYEE_BY_ID, + variables: { + id: payload.id, + } + }); + logImEXEvent("redux_employee_get_rates_attempt", payload); + const { valid, technician, error } = response.data; + + if (valid) { + yield put(employeeGetRatesSuccess(technician)); + } else { + yield put(employeeGetRatesFailure(error)); + } + } catch (error) { + yield put(employeeGetRatesFailure(error)); + console.log("Error while getting employee rates.", error); + Sentry.Native.captureException(error); + } +} + +export function* employeeSagas() { + yield all([call(onSignInEmployeeStart), call(employeeGetRatesSuccess)]); } diff --git a/redux/employee/employee.selectors.js b/redux/employee/employee.selectors.js index b5234a7..53e0f66 100644 --- a/redux/employee/employee.selectors.js +++ b/redux/employee/employee.selectors.js @@ -3,14 +3,22 @@ import { createSelector } from "reselect"; const selectEmployee = (state) => state.employee; export const selectCurrentEmployee = createSelector( - [selectEmployee], - (employee) => employee.currentEmployee - ); + [selectEmployee], + (employee) => employee.currentEmployee +); export const selectSigningIn = createSelector( - [selectEmployee], - (employee) => employee.signingIn - ); - export const selectSignInError = createSelector( - [selectEmployee], - (employee) => employee.error - ); \ No newline at end of file + [selectEmployee], + (employee) => employee.signingIn +); +export const selectSignInError = createSelector( + [selectEmployee], + (employee) => employee.error +); +export const selectRates = createSelector( + [selectEmployee], + (employee) => employee.currentEmployee.rates +); +export const selectGettingRates = createSelector( + [selectEmployee], + (employee) => employee.gettingRates +);