salix/print/templates/email/osticket-report/osticket-report.js

67 lines
1.9 KiB
JavaScript
Executable File

const Component = require(`vn-print/core/component`);
const emailBody = new Component('email-body');
module.exports = {
name: 'osticket-report',
async serverPrefetch() {
const tickets = await this.fetchTickets();
this.resolvedTickets = tickets.length;
const technicians = [];
for (let ticket of tickets) {
const technicianName = ticket.assigned;
let technician = technicians.find(technician => {
return technician.name == technicianName;
});
if (!technician) {
technician = {
name: technicianName,
tickets: []
};
technicians.push(technician);
}
technician.tickets.push(ticket);
}
this.technicians = technicians.sort((acumulator, value) => {
return value.tickets.length - acumulator.tickets.length;
});
if (!this.technicians)
throw new Error('Something went wrong');
},
computed: {
dated: function() {
const filters = this.$options.filters;
return filters.date(Date.vnNew(), '%d-%m-%Y');
},
startedTime: function() {
return new Date(this.started).getTime();
},
endedTime: function() {
return new Date(this.ended).getTime();
}
},
methods: {
fetchDateRange() {
return this.findOneFromDef('dateRange');
},
async fetchTickets() {
const {started, ended} = await this.fetchDateRange();
this.started = started;
this.ended = ended;
const connection = await this.getConnection('osticket');
return this.rawSqlFromDef('tickets', [started, ended], connection);
}
},
components: {
'email-body': emailBody.build(),
},
props: {}
};