trc-client-core
Version:
The core of the TRC Client
97 lines (78 loc) • 3.08 kB
JavaScript
import {
PARTICIPANT_REQUEST_FETCH,
PARTICIPANT_REQUEST_RECEIVE,
PARTICIPANT_REQUEST_ERROR,
PARTICIPANT_DASHBOARD_FETCH,
PARTICIPANT_DASHBOARD_RECEIVE,
PARTICIPANT_DASHBOARD_ERROR,
PARTICIPANT_MANAGERS_FETCH,
PARTICIPANT_MANAGERS_RECEIVE,
PARTICIPANT_MANAGERS_ERROR,
PARTICIPANT_SEARCH_FETCH,
PARTICIPANT_SEARCH_RECEIVE,
PARTICIPANT_SEARCH_ERROR,
PARTICIPANT_REQUEST_LIST_FETCH,
PARTICIPANT_REQUEST_LIST_RECEIVE,
PARTICIPANT_REQUEST_LIST_ERROR,
PARTICIPANT_JOB_POSITION_LIST_FETCH,
PARTICIPANT_JOB_POSITION_LIST_RECEIVE,
PARTICIPANT_JOB_POSITION_LIST_ERROR
} from 'trc-client-core/src/constants/ActionTypes';
import {Map, fromJS, List} from 'immutable';
const initialState = Map({
fetching: false,
managers: List(),
list: List(),
dashboard: Map(),
jobPositions: List()
});
export default function ParticipantReducer(state = initialState, action) {
switch (action.type) {
case PARTICIPANT_REQUEST_FETCH:
case PARTICIPANT_DASHBOARD_FETCH:
case PARTICIPANT_MANAGERS_FETCH:
case PARTICIPANT_SEARCH_FETCH:
case PARTICIPANT_REQUEST_LIST_FETCH:
case PARTICIPANT_JOB_POSITION_LIST_FETCH:
return state.set('fetching', true);
case PARTICIPANT_REQUEST_ERROR:
case PARTICIPANT_DASHBOARD_ERROR:
case PARTICIPANT_MANAGERS_ERROR:
case PARTICIPANT_SEARCH_ERROR:
case PARTICIPANT_REQUEST_LIST_ERROR:
case PARTICIPANT_JOB_POSITION_LIST_ERROR:
return state
.set('fetching', false)
.set('error', fromJS(action.payload));
case PARTICIPANT_REQUEST_RECEIVE:
return state.set('participant', fromJS(action.payload));
case PARTICIPANT_REQUEST_LIST_RECEIVE:
return state.set('list', fromJS(action.payload));
case PARTICIPANT_DASHBOARD_RECEIVE:
const dashboard = fromJS({
currentEnrollments: action.payload.enrolledList,
currentWaitlists: action.payload.waitedList,
trainingHistory: action.payload.history,
learningPlans: action.payload.pathways,
sessions: action.payload.sessionStatusList // This is a map.
})
.merge(fromJS(action.payload.viewedParticipant))
return state
.set('dashboard', dashboard)
.set('fetching', false);
case PARTICIPANT_MANAGERS_RECEIVE:
return state.set('managers', fromJS(action.payload));
case PARTICIPANT_SEARCH_RECEIVE:
return state.set('search', fromJS(action.payload));
case PARTICIPANT_JOB_POSITION_LIST_RECEIVE:
return state.set('jobPositions', fromJS(action.payload)
.map(ii => Map({
value: ii.get('jobPositionId'),
label: ii.get('jobPositionDesc')
}))
.sortBy(ii => ii.get('label'))
);
default:
return state;
}
}