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}, fields: 'alertLevel'}); let exists = await Self.app.models.Ticket.findOne({where: {id: ticketFk}, fields: 'isDeleted'}); return (exists && state == null && exists.isDeleted == 0) || (exists.isDeleted == 0 && state.alertLevel == 0); }; };