31 lines
1.0 KiB
JavaScript
31 lines
1.0 KiB
JavaScript
import { all, call, takeLatest, select, put } from "redux-saga/effects";
|
|
import { setSelectedJobTargetPcSuccess } from "./application.actions";
|
|
import ApplicationActionTypes from "./application.types";
|
|
|
|
export function* onSetTargetPc() {
|
|
yield takeLatest(
|
|
ApplicationActionTypes.SET_SELECTED_JOB_TARGET_PC,
|
|
CalculateTarget
|
|
);
|
|
}
|
|
export function* CalculateTarget({ payload }) {
|
|
const { group, v_age } = payload;
|
|
const targets = yield select((state) => state.user.bodyshop.targets);
|
|
|
|
const targetsForGroup = targets.filter((t) => t.group === group);
|
|
if (!targetsForGroup) return 0;
|
|
const targetPc = targetsForGroup.filter(
|
|
(t) => t.ageGte <= v_age && (t.ageLt ? t.ageLt > v_age : true)
|
|
);
|
|
if (targetPc.length === 0) yield put(setSelectedJobTargetPcSuccess(100));
|
|
else if (targetPc.length === 1)
|
|
yield put(setSelectedJobTargetPcSuccess(targetPc[0].target));
|
|
else {
|
|
yield put(setSelectedJobTargetPcSuccess(100));
|
|
}
|
|
}
|
|
|
|
export function* applicationSagas() {
|
|
yield all([call(onSetTargetPc)]);
|
|
}
|