salix/print/templates/email/backup-printer-selected/backup-printer-selected.js

50 lines
1.6 KiB
JavaScript
Raw Normal View History

const Component = require(`vn-print/core/component`);
const emailBody = new Component('email-body');
const name = 'backup-printer-selected';
module.exports = {
name: name,
2023-05-29 10:55:20 +00:00
async serverPrefetch() {
const notifications = await this.rawSqlFromDef('previousNotifications', [name]);
if (!notifications.length || checkDuplicates(notifications, this.labelerId, this.sectorId))
throw new Error('Previous notification sended with the same parameters');
2023-05-29 10:55:20 +00:00
this.sector = await this.findOneFromDef('sector', [this.sectorId]);
2023-05-29 10:55:20 +00:00
if (!this.sector)
throw new Error('Something went wrong');
this.labeler = await this.findOneFromDef('printer', [this.labelerId]);
this.mainPrinter = await this.findOneFromDef('printer', [this.sector.backupPrinterFk]);
2023-05-29 10:55:20 +00:00
this.worker = await this.findOneFromDef('worker', [this.workerId]);
},
components: {
'email-body': emailBody.build(),
},
props: {
2023-05-29 10:55:20 +00:00
labelerId: {
type: Number,
required: true
},
2023-05-29 10:55:20 +00:00
sectorId: {
type: Number,
required: true
},
2023-05-29 10:55:20 +00:00
workerId: {
type: Number,
required: true
}
}
};
function checkDuplicates(notifications, labelerFk, printerFk) {
const criteria = {
labelerId: labelerFk,
sectorId: printerFk
};
const filteredNotifications = notifications.filter(notification => {
const paramsObj = JSON.parse(notification.params);
return Object.keys(criteria).every(key => criteria[key] === paramsObj[key]);
});
2024-02-21 11:59:42 +00:00
return filteredNotifications.length > 1;
}