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.
 
 
 

61 lines
1.9 KiB

import { effects } from "redux-saga";
import {
isSendingCShiftRequest,
setCShiftRequestError,
setCShiftRequestErrors,
setCShiftRequestSuccess,
clearCShiftRequestError,
clearCShiftRequestSuccess,
setFormEmployeeUUID,
setFormPriceUUID,
setFormShiftDates,
setFormShiftDuration,
setFormShiftNote,
setFormShiftStartTime
} from "../actions/cShift/reducer.actions";
import { createCShifts } from "../api/cShift.api";
function* createCShiftsCall(postBodies) {
yield effects.put(isSendingCShiftRequest(true));
try {
if (postBodies.length > 0) {
return yield effects.call(createCShifts, postBodies);
} else {
yield effects.put(
setCShiftRequestError({
response: { data: { dates: ["No dates selected."] } }
})
);
return false;
}
} catch (exception) {
yield effects.put(setCShiftRequestError(exception));
return false;
} finally {
yield effects.put(isSendingCShiftRequest(false));
}
}
export function* createCShiftsFlow(request) {
yield effects.put(clearCShiftRequestSuccess());
yield effects.put(clearCShiftRequestError());
const arrResponses = yield effects.call(createCShiftsCall, request.data);
console.log(arrResponses);
if (arrResponses) {
const errorResps = arrResponses.filter(resp => !!resp.error);
if (errorResps.length > 0) {
console.log(arrResponses);
yield effects.put(setCShiftRequestErrors(errorResps));
}
const succResps = arrResponses.filter(resp => !resp.error);
if (succResps.length > 0) {
yield effects.put(setCShiftRequestSuccess(succResps));
yield effects.put(setFormEmployeeUUID(""));
yield effects.put(setFormPriceUUID(""));
yield effects.put(setFormShiftStartTime(null));
yield effects.put(setFormShiftDuration(""));
yield effects.put(setFormShiftNote(""));
yield effects.put(setFormShiftDates({}));
}
}
}