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 = new Date();
        minDate.setHours(0, 0, 0, 0);
        minDate.setMonth(minDate.getMonth() - 2);

        const maxDate = new Date();
        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() {
        this.vnReport.show('supplier-campaign-metrics', 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);
                this.vnEmail.send('supplier-campaign-metrics', 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'
    }
});