UNPKG

trc-client-core

Version:
87 lines (68 loc) 3.17 kB
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;