module.exports = function(Self) { Self.remoteMethodCtx('changeState', { description: 'Change state of tickets', accepts: [ { arg: 'state', type: 'number', required: true, description: 'New state', http: {source: 'path'} } ], returns: { arg: 'response', type: 'boolean' }, http: { verb: 'put', path: '/:state/changeState' } }); Self.changeState = function(ctx, state, cb) { var tickets = ctx.req.body.tickets; Self.connectToService(ctx, 'client'); Self.app.models.Worker.findOne({where: {userFk: ctx.req.accessToken.userId}}, function(err, emp) { if (err) cb(err, null); else changeState(emp.id, tickets, state, cb); }); Self.disconnectFromService('client'); }; function changeState(emp, tickets, state, cb) { var inserts = []; var FakeProduction = Self.app.models.FakeProduction; tickets.forEach(function(t) { inserts.push({ticketFk: t, stateFk: state, workerFk: emp}); }, this); Self.create(inserts, function(err, res) { if (err) cb(err, null); else { FakeProduction.updateAll({ticketFk: {inq: tickets}}, {stateFk: state}, function(err, info) { cb(err, info); }); } }); } };