const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { Self.remoteMethodCtx('updateWorkerTimeControlMail', { description: 'Updates the state of WorkerTimeControlMail', accessType: 'WRITE', accepts: [{ arg: 'workerId', type: 'number', required: true }, { arg: 'year', type: 'number', required: true }, { arg: 'week', type: 'number', required: true }, { arg: 'state', type: 'string', required: true }, { arg: 'reason', type: 'string' }], returns: { type: 'boolean', root: true }, http: { path: `/updateWorkerTimeControlMail`, verb: 'POST' } }); Self.updateWorkerTimeControlMail = async(ctx, options) => { const models = Self.app.models; const args = ctx.args; const userId = ctx.req.accessToken.userId; const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); const workerTimeControlMail = await models.WorkerTimeControlMail.findOne({ where: { workerFk: args.workerId, year: args.year, week: args.week } }, myOptions); if (!workerTimeControlMail) throw new UserError(`There aren't records for this week`); const oldState = workerTimeControlMail.state; const oldReason = workerTimeControlMail.reason; if (oldState == args.state) throw new UserError('Already has this status'); await workerTimeControlMail.updateAttributes({ state: args.state, reason: args.reason || null }, myOptions); const logRecord = { originFk: args.workerId, userFk: userId, action: 'update', changedModel: 'WorkerTimeControlMail', oldInstance: { state: oldState, reason: oldReason }, newInstance: { state: args.state, reason: args.reason } }; return models.WorkerLog.create(logRecord, myOptions); }; };