trc-client-core
Version:
The core of the TRC Client
87 lines (68 loc) • 3.17 kB
JavaScript
import Reflux from 'reflux';
import xhr from 'trc-client-core/src/utils/xhr';
import UserStore from 'trc-client-core/src/user/UserStore';
var RequiredRolesActions = Reflux.createActions({
'fetchRequiredRole': {asyncResult: true},
'saveRequiredRole': {asyncResult: true},
'createRequiredRole': {asyncResult: true},
'fetchAllRequiredRoles': {asyncResult: true},
'fetchJobPositions': {asyncResult: true},
'fetchDealershipRoles': {asyncResult: true},
'fetchAdminReport': {asyncResult: true},
'fetchQAReport': {asyncResult: true},
'nominate': {asyncResult: true},
'remove': {asyncResult: true},
'renominate': {asyncResult: true},
'decision': {asyncResult: true},
'fetchSingleRole': {}
});
function simplePromise(verb, url, payload) {
return xhr[verb](url, payload).then(this.completed, this.failed);
}
RequiredRolesActions.fetchRequiredRole.listen(function(id){
simplePromise.call(this, 'get', '/api/dealership/admin/roles/' + id);
});
RequiredRolesActions.saveRequiredRole.listen(function(payload){
simplePromise.call(this, 'put', '/api/dealership/admin/roles/' + payload.id, payload);
});
RequiredRolesActions.createRequiredRole.listen(function(payload){
simplePromise.call(this, 'post', '/api/dealership/admin/roles/', payload);
});
RequiredRolesActions.fetchAllRequiredRoles.listen(function(){
simplePromise.call(this, 'get', '/api/dealership/admin/roles');
});
RequiredRolesActions.fetchJobPositions.listen(function(){
simplePromise.call(this, 'get', '/api/jobPositions');
});
RequiredRolesActions.fetchDealershipRoles.listenAndPromise(function(){
return xhr.get('/api/dealership/roles');
});
RequiredRolesActions.nominate.listen(function(query){
simplePromise.call(this, 'post', '/api/dealership/nominate', query);
});
RequiredRolesActions.renominate.listen(function(query){
simplePromise.call(this, 'post', '/api/dealership/renominate', query);
});
RequiredRolesActions.remove.listen(function(query){
simplePromise.call(this, 'post', '/api/dealership/remove', query);
});
RequiredRolesActions.fetchAdminReport.listenAndPromise((query) => {
if (UserStore.is('ROLE_SUPER_ADMIN') || UserStore.is('ROLE_TMCA_ADMIN') || UserStore.is('ROLE_REGIONAL_ADMIN')) {
return xhr.get('/api/admin/report/' + query.roleId, query);
}
return Promise.reject(new Error('Insufficient Permissions'));
});
RequiredRolesActions.fetchQAReport.listenAndPromise(function(){
if (UserStore.is('ROLE_SUPER_ADMIN') || UserStore.is('ROLE_TMCA_ADMIN') || UserStore.is('ROLE_REGIONAL_ADMIN')) {
return xhr.get('/api/admin/report/qa');
}
return Promise.reject(new Error('Insufficient Permissions'));
});
RequiredRolesActions.decision.listen(function(query){
simplePromise.call(this, 'put', '/api/admin/decision', query);
});
RequiredRolesActions.fetchSingleRole.listen(function(id) {
RequiredRolesActions.fetchJobPositions();
RequiredRolesActions.fetchRequiredRole(id);
});
module.exports = RequiredRolesActions;