const strftime = require('strftime'); const database = require(`${appPath}/lib/database`); const UserException = require(`${appPath}/lib/exceptions/userException`); module.exports = { name: 'rpt-sepa-core', async asyncData(ctx, params) { if (!params.clientFk) throw new UserException('No client id specified'); if (!params.companyFk) throw new UserException('No company id specified'); return this.methods.fetchClient(params.clientFk, params.companyFk) .then(([[client]]) => { if (!client) throw new UserException('No client data found'); return client; }); }, created() { if (this.locale) this.$i18n.locale = this.locale; }, methods: { fetchClient(clientFk, companyFk) { return database.pool.query( `SELECT c.id clientId, u.lang locale, m.code mandateCode, c.email AS recipient, c.socialName AS clientName, c.street AS clientStreet, c.postcode AS clientPostCode, c.city AS clientCity, p.name AS clientProvince, ct.country AS clientCountry, s.name AS supplierName, s.street AS supplierStreet, sc.country AS supplierCountry, s.postCode AS supplierPostCode, s.city AS supplierCity, sp.name AS supplierProvince FROM client c JOIN account.user u ON u.id = c.id JOIN country ct ON ct.id = c.countryFk JOIN mandate m ON m.clientFk = c.id AND m.finished IS NULL JOIN supplier s ON s.id = m.companyFk JOIN country sc ON sc.id = s.countryFk JOIN province sp ON sp.id = s.provinceFk LEFT JOIN province p ON p.id = c.provinceFk WHERE m.companyFk = ? AND c.id = ?`, [companyFk, clientFk]); }, dated: () => { return strftime('%d-%m-%Y', new Date()); }, toISOString: date => { return strftime('%d-%m-%Y', date); }, }, components: { 'report-header': require('../report-header'), 'report-footer': require('../report-footer'), }, };