const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { Self.remoteMethodCtx('addLog', { description: 'Add a new log', accessType: 'WRITE', accepts: { arg: 'code', type: 'string', required: true, }, http: { path: '/addLog', verb: 'POST' } }); Self.addLog = async(ctx, code, options) => { const userId = ctx.req.accessToken.userId; const $t = ctx.req.__; const models = Self.app.models; const myOptions = {}; let tx; if (typeof options == 'object') Object.assign(myOptions, options); if (!myOptions.transaction) { tx = await Self.beginTransaction({}); myOptions.transaction = tx; } try { const shelving = await Self.findOne({ where: { code } }, myOptions); if (!shelving) throw new UserError($t('Shelving not valid')); await models.ShelvingLog.create({ changedModel: 'Shelving', originFk: shelving.id, changedModelId: shelving.id, action: 'select', userFk: userId }, myOptions); if (tx) await tx.commit(); } catch (e) { if (tx) await tx.rollback(); throw e; } }; };