salix/modules/ticket/back/methods/state/editableStates.js

41 lines
1.2 KiB
JavaScript
Raw Normal View History

2019-08-08 06:33:27 +00:00
module.exports = Self => {
Self.remoteMethodCtx('editableStates', {
description: 'Gets the editable states according the user role ',
accessType: 'READ',
2020-03-26 11:00:07 +00:00
accepts: {
arg: 'filter',
type: 'object'
},
2019-08-08 06:33:27 +00:00
returns: {
type: ['object'],
2019-08-08 06:33:27 +00:00
root: true
},
http: {
path: `/editableStates`,
verb: 'GET'
}
});
Self.editableStates = async(ctx, filter, options) => {
const models = Self.app.models;
const userId = ctx.req.accessToken.userId;
const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
2019-08-08 06:33:27 +00:00
const isProduction = await models.VnUser.hasRole(userId, 'production', myOptions);
const isSalesPerson = await models.VnUser.hasRole(userId, 'salesPerson', myOptions);
const isAdministrative = await models.VnUser.hasRole(userId, 'administrative', myOptions);
2019-08-08 06:33:27 +00:00
filter.where = {alertLevel: 0};
2019-08-08 06:33:27 +00:00
if (isSalesPerson)
filter.where = {or: [{alertLevel: 0}, {code: 'PICKER_DESIGNED'}]};
if (isProduction || isAdministrative) delete filter.where;
2019-08-08 06:33:27 +00:00
return models.State.find(filter, myOptions);
2019-08-08 06:33:27 +00:00
};
};