const UserException = require(`${appPath}/lib/exceptions/userException`); const reportEngine = require(`${appPath}/lib/reportEngine`); const database = require(`${appPath}/lib/database`); const emailHeader = require('../email-header'); const emailFooter = require('../email-footer'); module.exports = { name: 'claim-pickup-order', async asyncData(ctx, params) { const promises = []; const data = { isPreview: ctx.method === 'GET', }; if (!params.claimFk) throw new UserException('No claim id specified'); promises.push(reportEngine.toPdf('rpt-claim-pickup-order', ctx)); promises.push(this.methods.fetchClient(params.claimFk)); return Promise.all(promises).then(result => { const stream = result[0]; const [[client]] = result[1]; Object.assign(data, client); Object.assign(data, {attachments: [{filename: 'claim-pickup-order.pdf', content: stream}]}); return data; }); }, created() { if (this.locale) this.$i18n.locale = this.locale; }, methods: { fetchClient(claimFk) { return database.pool.query(` SELECT c.id, u.lang locale, c.email recipient FROM claim cl JOIN client c ON c.id = cl.clientFk JOIN account.user u ON u.id = c.id WHERE cl.id = ?`, [claimFk]); }, }, components: { emailHeader, emailFooter, }, };