module.exports = Self => { Self.remoteMethod('createWithInsurance', { description: 'Creates both classification and one insurance', accepts: [{ arg: 'data', type: 'object', http: {source: 'body'} }, { arg: 'context', type: 'object', http: function(ctx) { return ctx; } }], returns: { root: true, type: 'boolean' }, http: { verb: 'post', path: '/createWithInsurance' } }); Self.createWithInsurance = async (data, ctx) => { let transaction = await Self.beginTransaction({}); try { let classificationSchema = {client: data.clientFk, started: data.started}; let newClassification = await Self.create(classificationSchema, {transaction}); let CreditInsurance = Self.app.models.CreditInsurance; let insuranceSchema = { creditClassification: newClassification.id, credit: data.credit, grade: data.grade }; let newCreditInsurance = await CreditInsurance.create(insuranceSchema, {transaction}); await transaction.commit(); await CreditInsurance.messageSend(newCreditInsurance, ctx.req.accessToken); return newClassification; } catch (e) { transaction.rollback(); throw e; } }; };