UNPKG

trc-client-core

Version:
97 lines (78 loc) 3.08 kB
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; } }