import ngModule from '../module';
import Section from 'salix/components/section';
import './style.scss';

class Controller extends Section {
    constructor($element, $) {
        super($element, $);

        this.smartTableOptions = {
            activeButtons: {
                search: true,
                shownColumns: true,
            },
            columns: [
                {
                    field: 'category',
                    autocomplete: {
                        url: 'ItemCategories',
                        valueField: 'name',
                    }
                },
                {
                    field: 'origin',
                    autocomplete: {
                        url: 'Origins',
                        showField: 'code',
                        valueField: 'code'
                    }
                },
                {
                    field: 'typeFk',
                    autocomplete: {
                        url: 'ItemTypes',
                    }
                },
                {
                    field: 'intrastat',
                    autocomplete: {
                        url: 'Intrastats',
                        showField: 'description',
                        valueField: 'description'
                    }
                },
                {
                    field: 'buyerFk',
                    autocomplete: {
                        url: 'Workers/activeWithRole',
                        where: `{role: {inq: ['logistic', 'buyer']}}`,
                        searchFunction: '{firstName: $search}',
                        showField: 'nickname',
                        valueField: 'id',
                    }
                },
                {
                    field: 'active',
                    searchable: false
                },
                {
                    field: 'landed',
                    searchable: false
                },
            ]
        };
    }

    exprBuilder(param, value) {
        switch (param) {
        case 'category':
            return {'ic.name': value};
        case 'buyerFk':
            return {'it.workerFk': value};
        case 'grouping':
            return {'b.grouping': value};
        case 'packing':
            return {'b.packing': value};
        case 'origin':
            return {'ori.code': value};
        case 'typeFk':
            return {'i.typeFk': value};
        case 'intrastat':
            return {'intr.description': value};
        case 'name':
            return {'i.name': {like: `%${value}%`}};
        case 'producer':
            return {'pr.name': {like: `%${value}%`}};
        case 'id':
        case 'size':
        case 'subname':
        case 'isActive':
        case 'weightByPiece':
        case 'stemMultiplier':
        case 'stems':
            return {[`i.${param}`]: value};
        }
    }

    onCloneAccept(itemFk) {
        return this.$http.post(`Items/${itemFk}/clone`)
            .then(res => {
                this.$state.go('item.card.tags', {id: res.data.id});
            });
    }

    preview(item) {
        this.itemSelected = item;
        this.$.preview.show();
    }
}

ngModule.vnComponent('vnItemIndex', {
    template: require('./index.html'),
    controller: Controller
});