added employee folder redux
This commit is contained in:
29
redux/employee/employee.actions.js
Normal file
29
redux/employee/employee.actions.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import EmployeeActionTypes from "./employee.types";
|
||||
|
||||
export const signInEmployeeStart = (employeeIdAndPin) => ({
|
||||
type: EmployeeActionTypes.SIGN_IN_EMPLOYEE_START,
|
||||
payload: employeeIdAndPin,
|
||||
});
|
||||
|
||||
export const signInEmployeeSuccess = (technician) => ({
|
||||
type: EmployeeActionTypes.SIGN_IN_EMPLOYEE_SUCCESS,
|
||||
payload: technician,
|
||||
});
|
||||
|
||||
export const signInEmployeeFailure = (error) => ({
|
||||
type: EmployeeActionTypes.SIGN_IN_EMPLOYEE_FAILURE,
|
||||
payload: error,
|
||||
});
|
||||
|
||||
export function loginEmployee() {
|
||||
return {
|
||||
type: EmployeeActionTypes.AUTHORIZING_EMPLOYEE_REQUEST,
|
||||
payload:"text"
|
||||
}
|
||||
}
|
||||
export function loginEmployeeSuccess(technician) {
|
||||
return {
|
||||
type: EmployeeActionTypes.AUTHORIZING_EMPLOYEE_SUCCESS,
|
||||
payload: technician
|
||||
}
|
||||
}
|
||||
36
redux/employee/employee.reducer.js
Normal file
36
redux/employee/employee.reducer.js
Normal file
@@ -0,0 +1,36 @@
|
||||
import EmployeeActionTypes from "./employee.types";
|
||||
|
||||
const INITIAL_STATE = {
|
||||
currentEmployee: {
|
||||
authorized: null,
|
||||
},
|
||||
employeeSigningIn: false,
|
||||
error: null,
|
||||
};
|
||||
|
||||
const employeeReducer = (state = INITIAL_STATE, action) => {
|
||||
switch (action.type) {
|
||||
case EmployeeActionTypes.SIGN_IN_EMPLOYEE_START:
|
||||
return {
|
||||
...state,
|
||||
employeeSigningIn: true,
|
||||
error: null,
|
||||
};
|
||||
case EmployeeActionTypes.SIGN_IN_EMPLOYEE_SUCCESS:
|
||||
return {
|
||||
...state,
|
||||
currentEmployee: action.payload,
|
||||
error: null,
|
||||
};
|
||||
case EmployeeActionTypes.SIGN_OUT_EMPLOYEE_SUCCESS:
|
||||
return {
|
||||
...state,
|
||||
currentEmployee: { authorized: false },
|
||||
error: null,
|
||||
};
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
};
|
||||
|
||||
export default employeeReducer;
|
||||
42
redux/employee/employee.sagas.js
Normal file
42
redux/employee/employee.sagas.js
Normal file
@@ -0,0 +1,42 @@
|
||||
import EmployeeActionTypes from "./employee.types";
|
||||
import {
|
||||
signInEmployeeStart,
|
||||
signInEmployeeSuccess,
|
||||
signInEmployeeFailure,
|
||||
} from "./employee.actions";
|
||||
import { all, call, put, takeLatest } from "redux-saga/effects";
|
||||
import { logImEXEvent } from "../../firebase/firebase.analytics";
|
||||
import { selectBodyshop } from "../user/user.selectors";
|
||||
import axios from "axios";
|
||||
|
||||
export function* onSignInEmployeeStart() {
|
||||
yield takeLatest(
|
||||
EmployeeActionTypes.SIGN_IN_EMPLOYEE_START,
|
||||
signInWithEmployeeId
|
||||
);
|
||||
}
|
||||
export function* signInWithEmployeeId({ payload: { employeeid, pin } }) {
|
||||
try {
|
||||
logImEXEvent("redux_sign_in_employee_attempt");
|
||||
//console.loging
|
||||
const bodyshop = yield select(selectBodyshop);
|
||||
const response = yield call(axios.post, "/tech/login", {
|
||||
shopid: bodyshop.id,
|
||||
employeeid: employeeid,
|
||||
pin: pin,
|
||||
});
|
||||
const { valid, technician, error } = response.data;
|
||||
|
||||
if (valid) {
|
||||
yield put(signInEmployeeSuccess(technician));
|
||||
} else {
|
||||
yield put(signInEmployeeFailure(error));
|
||||
}
|
||||
} catch (error) {
|
||||
yield put(signInEmployeeFailure(error));
|
||||
}
|
||||
}
|
||||
|
||||
export function* employeeSagas() {
|
||||
yield all([call(onSignInEmployeeStart)]);
|
||||
}
|
||||
12
redux/employee/employee.selectors.js
Normal file
12
redux/employee/employee.selectors.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import { createSelector } from "reselect";
|
||||
|
||||
const selectEmployee = (state) => state.employee;
|
||||
|
||||
export const selectCurrentEmployee = createSelector(
|
||||
[selectEmployee],
|
||||
(employee) => employee.currentEmployee
|
||||
);
|
||||
export const selectSigningIn = createSelector(
|
||||
[selectEmployee],
|
||||
(employee) => employee.signingIn
|
||||
);
|
||||
17
redux/employee/employee.types.js
Normal file
17
redux/employee/employee.types.js
Normal file
@@ -0,0 +1,17 @@
|
||||
const EmployeeActionTypes = {
|
||||
AUTHORIZING_EMPLOYEE_REQUEST:"AUTHORIZING_EMPLOYEE_REQUEST",
|
||||
AUTHORIZING_EMPLOYEE_SUCCESS:"AUTHORIZING_EMPLOYEE_SUCCESS",
|
||||
AUTHORIZING_EMPLOYEE_SUCCESS:"AUTHORIZING_EMPLOYEE_FAILURE",
|
||||
SET_CURRENT_EMPLOYEE: "SET_CURRENT_EMPLOYEE",
|
||||
SIGN_IN_EMPLOYEE_SUCCESS: "SIGN_IN_EMPLOYEE_SUCCESS",
|
||||
SIGN_IN_EMPLOYEE_FAILURE: "SIGN_IN_EMPLOYEE_FAILURE",
|
||||
SIGN_IN_EMPLOYEE_START: "SIGN_IN_EMPLOYEE_START",
|
||||
CHECK_EMPLOYEE_SESSION: "CHECK_EMPLOYEE_SESSION",
|
||||
SIGN_OUT_EMPLOYEE_START: "SIGN_OUT_EMPLOYEE_START",
|
||||
SIGN_OUT_EMPLOYEE_SUCCESS: "SIGN_OUT_EMPLOYEE_SUCCESS",
|
||||
SIGN_OUT_EMPLOYEE_FAILURE: "SIGN_OUT_EMPLOYEE_FAILURE",
|
||||
UNAUTHORIZED_EMPLOYEE: "UNAUTHORIZED_EMPLOYEE",
|
||||
UPDATE_EMPLOYEE_DETAILS: "UPDATE_EMPLOYEE_DETAILS",
|
||||
UPDATE_EMPLOYEE_DETAILS_SUCCESS: "UPDATE_EMPLOYEE_DETAILS_SUCCESS",
|
||||
};
|
||||
export default EmployeeActionTypes;
|
||||
Reference in New Issue
Block a user