salix/modules/supplier/front/consumption/index.js

89 lines
2.3 KiB
JavaScript

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'
}
});