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.
85 lines
2.5 KiB
85 lines
2.5 KiB
import { effects } from "redux-saga"; |
|
import { |
|
isSendingPriceRequest, |
|
setPriceRequestError, |
|
clearPriceRequestError, |
|
setPriceRequestSuccess, |
|
clearPriceRequestSuccess, |
|
setGetEmployeeUUID, |
|
setGetWorktypeUUID, |
|
setFormPriceAmount |
|
} from "../actions/price/reducer.actions"; |
|
import { getSelfUserRequest } from "../actions/user/saga.actions"; |
|
import { createPrice, updatePrice, deletePrice } from "../api/price.api"; |
|
|
|
function* createPriceCall(postBody) { |
|
yield effects.put(isSendingPriceRequest(true)); |
|
const { get_employee_uuid, get_work_type_uuid, amount } = postBody; |
|
try { |
|
return yield effects.call( |
|
createPrice, |
|
get_employee_uuid, |
|
get_work_type_uuid, |
|
amount |
|
); |
|
} catch (exception) { |
|
yield effects.put(setPriceRequestError(exception)); |
|
return false; |
|
} finally { |
|
yield effects.put(isSendingPriceRequest(false)); |
|
} |
|
} |
|
|
|
function* updatePriceCall(payload) { |
|
yield effects.put(isSendingPriceRequest(true)); |
|
const { uuid, amount } = payload; |
|
try { |
|
return yield effects.call(updatePrice, uuid, amount); |
|
} catch (exception) { |
|
yield effects.put(setPriceRequestError(exception)); |
|
return false; |
|
} finally { |
|
yield effects.put(isSendingPriceRequest(false)); |
|
} |
|
} |
|
|
|
function* deletePriceCall(uuid) { |
|
yield effects.put(isSendingPriceRequest(true)); |
|
try { |
|
return yield effects.call(deletePrice, uuid); |
|
} catch (exception) { |
|
yield effects.put(setPriceRequestError(exception)); |
|
return false; |
|
} finally { |
|
yield effects.put(isSendingPriceRequest(false)); |
|
} |
|
} |
|
|
|
export function* createPriceFlow(request) { |
|
yield effects.put(clearPriceRequestSuccess()); |
|
yield effects.put(clearPriceRequestError()); |
|
const wasSuccessful = yield effects.call(createPriceCall, request.data); |
|
if (wasSuccessful) { |
|
yield effects.put(getSelfUserRequest()); |
|
yield effects.put(setPriceRequestSuccess(wasSuccessful)); |
|
yield effects.put(setGetEmployeeUUID("")); |
|
yield effects.put(setGetWorktypeUUID("")); |
|
yield effects.put(setFormPriceAmount("")); |
|
yield effects.put(clearPriceRequestError()); |
|
} |
|
} |
|
|
|
export function* updatePriceFlow(request) { |
|
yield effects.put(clearPriceRequestSuccess()); |
|
yield effects.put(clearPriceRequestError()); |
|
const wasSuccessful = yield effects.call(updatePriceCall, request.data); |
|
if (wasSuccessful) { |
|
yield effects.put(getSelfUserRequest()); |
|
yield effects.put(setPriceRequestSuccess(wasSuccessful)); |
|
} |
|
} |
|
|
|
export function* deletePriceFlow(request) { |
|
yield effects.call(deletePriceCall, request.data); |
|
yield effects.put(getSelfUserRequest()); |
|
}
|
|
|