You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

105 lines
3.2 KiB

import { effects } from "redux-saga";
import {
isSendingEmployeeRequest,
setEmployeeRequestError,
setEmployeeRequestSuccess,
clearEmployeeRequestError,
clearEmployeeRequestSuccess,
setEmployeeUUID,
setFormEmployeeEmail,
setFormEmployeeNote
} from "../actions/employee/reducer.actions";
import { getSelfUserRequest } from "../actions/user/saga.actions";
import {
addEmployee,
getEmployee,
deleteEmployee,
updateEmployee
} from "../api/employee.api";
function* addEmployeeCall(postBody) {
yield effects.put(isSendingEmployeeRequest(true));
const { provider_email, note } = postBody;
try {
return yield effects.call(addEmployee, provider_email, note);
} catch (exception) {
yield effects.put(setEmployeeRequestError(exception));
return false;
} finally {
yield effects.put(isSendingEmployeeRequest(false));
}
}
function* readEmployeeCall(uuid) {
yield effects.put(isSendingEmployeeRequest(true));
try {
return yield effects.call(getEmployee, uuid);
} catch (exception) {
yield effects.put(setEmployeeRequestError(exception));
return false;
} finally {
yield effects.put(isSendingEmployeeRequest(false));
}
}
function* updateEmployeeCall(payload) {
yield effects.put(isSendingEmployeeRequest(true));
const { uuid, provider_email, note } = payload;
try {
return yield effects.call(updateEmployee, uuid, provider_email, note);
} catch (exception) {
yield effects.put(setEmployeeRequestError(exception));
return false;
} finally {
yield effects.put(isSendingEmployeeRequest(false));
}
}
function* deleteEmployeeCall(uuid) {
yield effects.put(isSendingEmployeeRequest(true));
try {
return yield effects.call(deleteEmployee, uuid);
} catch (exception) {
yield effects.put(setEmployeeRequestError(exception));
return false;
} finally {
yield effects.put(isSendingEmployeeRequest(false));
}
}
export function* addEmployeeFlow(request) {
yield effects.put(clearEmployeeRequestSuccess());
yield effects.put(clearEmployeeRequestError());
const wasSuccessful = yield effects.call(addEmployeeCall, request.data);
if (wasSuccessful) {
yield effects.put(getSelfUserRequest());
yield effects.put(setEmployeeRequestSuccess(wasSuccessful));
yield effects.put(setFormEmployeeEmail(""));
yield effects.put(setFormEmployeeNote(""));
yield effects.put(clearEmployeeRequestError());
}
}
export function* readEmployeeFlow(request) {
const wasSuccessful = yield effects.call(readEmployeeCall, request.data);
if (wasSuccessful) {
yield effects.put(setEmployeeUUID(wasSuccessful.uuid));
yield effects.put(setFormEmployeeEmail(wasSuccessful.provider_email));
yield effects.put(setFormEmployeeNote(wasSuccessful.note));
}
}
export function* updateEmployeeFlow(request) {
yield effects.put(clearEmployeeRequestSuccess());
yield effects.put(clearEmployeeRequestError());
const wasSuccessful = yield effects.call(updateEmployeeCall, request.data);
if (wasSuccessful) {
yield effects.put(getSelfUserRequest());
yield effects.put(setEmployeeRequestSuccess(wasSuccessful));
}
}
export function* deleteEmployeeFlow(request) {
yield effects.call(deleteEmployeeCall, request.data);
yield effects.put(getSelfUserRequest());
}