const {Email} = require('vn-print'); module.exports = Self => { Self.remoteMethodCtx('claimPickupEmail', { description: 'Sends the the claim pickup order email with an attached PDF', accessType: 'WRITE', accepts: [ { arg: 'id', type: 'number', required: true, description: 'The claim id', http: {source: 'path'} }, { arg: 'recipient', type: 'string', description: 'The recipient email', required: true, }, { arg: 'replyTo', type: 'string', description: 'The sender email to reply to', required: false }, { arg: 'recipientId', type: 'number', description: 'The recipient id to send to the recipient preferred language', required: false } ], returns: { type: ['object'], root: true }, http: { path: '/:id/claim-pickup-email', verb: 'POST' } }); Self.claimPickupEmail = async ctx => { const models = Self.app.models; const $t = ctx.req.__; // $translate const url = await Self.app.models.Url.getUrl(); const args = Object.assign({}, ctx.args); const params = { recipient: args.recipient, lang: ctx.req.getLocale() }; delete args.ctx; for (const param in args) params[param] = args[param]; const claim = await models.Claim.findById(args.id, { fields: ['id', 'clientFk'], include: { relation: 'client', scope: { fields: ['name', 'salesPersonFk'] } } }); const message = $t('Claim pickup order sent', { claimId: args.id, clientName: claim.client().name, claimUrl: `${url}claim/${args.id}/summary`, }); const salesPersonId = claim.client().salesPersonFk; if (salesPersonId) await models.Chat.sendCheckingPresence(ctx, salesPersonId, message); const email = new Email('claim-pickup-order', params); return email.send(); }; };