import ngModule from '../module'; import Section from 'salix/components/section'; class Controller extends Section { constructor($element, $, vnReport, vnEmail) { super($element, $); this.vnReport = vnReport; this.vnEmail = vnEmail; this.setDefaultFilter(); } setDefaultFilter() { const minDate = Date.vnNew(); minDate.setHours(0, 0, 0, 0); minDate.setMonth(minDate.getMonth() - 2); const maxDate = Date.vnNew(); maxDate.setHours(23, 59, 59, 59); this.filterParams = { from: minDate, to: maxDate }; } get reportParams() { const userParams = this.$.model.userParams; return Object.assign({ authorization: this.vnToken.token, recipientId: this.supplier.id }, userParams); } showReport() { const path = `Suppliers/${this.supplier.id}/campaign-metrics-pdf`; this.vnReport.show(path, this.reportParams); } sendEmail() { const params = { filter: { where: { supplierFk: this.$params.id, email: {neq: null} }, limit: 1 } }; this.$http.get('SupplierContacts', params).then(({data}) => { if (data.length) { const contact = data[0]; const params = Object.assign({ recipient: contact.email }, this.reportParams); const path = `Suppliers/${this.supplier.id}/campaign-metrics-email`; this.vnEmail.send(path, params); } else { const message = this.$t(`This supplier doesn't have a contact with an email address`); this.vnApp.showError(message); } }); } getTotal(entry) { if (entry.buys) { let total = 0; for (let buy of entry.buys) total += buy.total; return total; } } } Controller.$inject = ['$element', '$scope', 'vnReport', 'vnEmail']; ngModule.vnComponent('vnSupplierConsumption', { template: require('./index.html'), controller: Controller, bindings: { supplier: '<' }, require: { card: '^vnSupplierCard' } });