const Component = require(`${appPath}/core/component`); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); const db = require(`${appPath}/core/database`); module.exports = { name: 'claim-pickup-order', async serverPrefetch() { this.client = await this.fetchClient(this.claimId); this.sales = await this.fetchSales(this.claimId); if (!this.client) throw new Error('Something went wrong'); }, computed: { currentDate: function() { const filters = this.$options.filters; return filters.date(new Date(), '%d-%m-%Y'); } }, methods: { fetchClient(claimId) { return db.findOne( `SELECT c.id, c.socialName, c.name, c.fi, a.city, a.postalCode, a.street, a.nickname, p.name AS province, ct.country FROM claim cl JOIN client c ON c.id = cl.clientFk JOIN account.user u ON u.id = c.id JOIN country ct ON ct.id = c.countryFk JOIN ticket t ON t.id = cl.ticketFk JOIN address a ON a.id = t.addressFk LEFT JOIN province p ON p.id = c.provinceFk WHERE cl.id = ?`, [claimId]); }, fetchSales(claimId) { return db.find( `SELECT s.id, s.quantity, s.concept, cb.quantity claimQuantity FROM claimBeginning cb JOIN sale s ON s.id = cb.saleFk WHERE cb.claimFk = ?`, [claimId]); }, }, components: { 'report-header': reportHeader.build(), 'report-footer': reportFooter.build() }, props: { claimId: { required: true } } };