trc-client-core
Version:
The core of the TRC Client
148 lines (117 loc) • 4.16 kB
JavaScript
import reflux from 'reflux';
import xhr from 'trc-client-core/src/utils/xhr';
import { createAction } from 'redux-actions';
import createRequestActions from 'trc-client-core/src/utils/createRequestActions';
import { jobPosition } from 'trc-client-core/src/utils/Request';
import {
TECHNICAL_TRAINERS,
TECHNICAL_TRAINERS_CURRENT,
PARTICIPANTS_ENDPOINT,
PARTICIPANT_SEARCH_ENDPOINT
} from 'trc-client-core/src/constants/Endpoints';
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 {
IS_TECH_STAFF
} from 'trc-client-core/src/constants/PredefinedQuerys';
var ParticipantActions = reflux.createActions({
'fetchCurrentParticipant': {asyncResult: true},
'fetchParticipant': {asyncResult: true},
'fetchParticipants': {asyncResult: true},
'fetchTechnicalStaff': {asyncResult: true},
'fetchManagers': {asyncResult: true},
'search': {asyncResult: true},
'fetchTechnicalTrainers': {asyncResult: true}
});
/**
* boolean current_dealer,
* boolean current_region,
* string dealer,
* list department,
* list region,
* boolean manager
*/
ParticipantActions.fetchCurrentParticipant.listenAndPromise(function(query) {
return xhr.get('/api/v1/participants', query);
});
ParticipantActions.fetchManagers.listenAndPromise(function() {
return xhr.get('/api/v1/participants', {
current_dealer: true,
manager: true
});
});
ParticipantActions.fetchTechnicalStaff.listenAndPromise(function() {
return xhr.get('/api/v1/participants', {
current_dealer: true,
predefined: IS_TECH_STAFF
});
});
ParticipantActions.search.listenAndPromise(function(query) {
return xhr.get('/admin/util/switch_user', query);
});
ParticipantActions.fetchTechnicalTrainers.listenAndPromise((query) => {
if(query.current === true) {
return xhr.get(TECHNICAL_TRAINERS_CURRENT, query);
} else {
return xhr.get(TECHNICAL_TRAINERS, query);
}
});
//
// REDUX
//
ParticipantActions.participantSearchRequest = createRequestActions(
PARTICIPANT_SEARCH_FETCH,
PARTICIPANT_SEARCH_RECEIVE,
PARTICIPANT_SEARCH_ERROR,
(query) => xhr.get(PARTICIPANT_SEARCH_ENDPOINT, query)
);
ParticipantActions.participantRequest = createRequestActions(
PARTICIPANT_REQUEST_FETCH,
PARTICIPANT_REQUEST_RECEIVE,
PARTICIPANT_REQUEST_ERROR,
(query) => xhr.get(PARTICIPANTS_ENDPOINT, query)
);
ParticipantActions.requestParticipantList = createRequestActions(
PARTICIPANT_REQUEST_LIST_FETCH,
PARTICIPANT_REQUEST_LIST_RECEIVE,
PARTICIPANT_REQUEST_LIST_ERROR,
(query) => xhr.get(PARTICIPANTS_ENDPOINT, query)
);
ParticipantActions.participantDashboardRequest = createRequestActions(
PARTICIPANT_DASHBOARD_FETCH,
PARTICIPANT_DASHBOARD_RECEIVE,
PARTICIPANT_DASHBOARD_ERROR,
(query) => xhr.get('/api/portal/dashboard/view', query)
);
ParticipantActions.requestManagers = (query) => (dispatch, getState) => {
dispatch(createAction(PARTICIPANT_MANAGERS_FETCH)());
xhr.get(PARTICIPANTS_ENDPOINT, {current_dealer: true, manager: true}).then(
(data) => dispatch(createAction(PARTICIPANT_MANAGERS_RECEIVE)(data)),
(error) => dispatch(createAction(PARTICIPANT_MANAGERS_ERROR)(error))
);
};
ParticipantActions.jobPositionRequest = createRequestActions(
PARTICIPANT_JOB_POSITION_LIST_FETCH,
PARTICIPANT_JOB_POSITION_LIST_RECEIVE,
PARTICIPANT_JOB_POSITION_LIST_ERROR,
(query) => jobPosition.list(query)
);
module.exports = ParticipantActions;