salix/modules/ticket/back/methods/ticket/isEditable.js

49 lines
1.3 KiB
JavaScript

module.exports = Self => {
Self.remoteMethod('isEditable', {
description: 'Check if a ticket is editable',
accessType: 'READ',
accepts: [{
arg: 'ticketFk',
type: 'number',
required: true,
description: 'ticketFk',
http: {source: 'path'}
}],
returns: {
type: 'boolean',
root: true
},
http: {
path: `/:ticketFk/isEditable`,
verb: 'get'
}
});
Self.isEditable = async ticketFk => {
let state = await Self.app.models.TicketState.findOne({
where: {ticketFk: ticketFk}
});
let alertLevel = state ? state.alertLevel : null;
let exists = await Self.app.models.Ticket.findOne({
where: {id: ticketFk},
fields: ['isDeleted', 'clientFk'],
include: [{
relation: 'client',
scope: {
include: {
relation: 'type'
}
}
}]
});
if (exists && exists.client().type().code !== 'normal')
return true;
if (!exists || exists.isDeleted == 1 || (alertLevel && alertLevel > 0))
return false;
return true;
};
};