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
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()); |
|
}
|
|
|