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

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

        this.smartTableOptions = {
            activeButtons: {
                search: true
            },
            columns: [
                {
                    field: 'clientName',
                    autocomplete: {
                        url: 'Clients',
                        showField: 'name',
                        valueField: 'name'
                    }
                },
                {
                    field: 'workerFk',
                    autocomplete: {
                        url: 'Workers/activeWithInheritedRole',
                        where: `{role: 'salesPerson'}`,
                        searchFunction: '{firstName: $search}',
                        showField: 'name',
                        valueField: 'id',
                    }
                },
                {
                    field: 'claimStateFk',
                    autocomplete: {
                        url: 'ClaimStates',
                        showField: 'description',
                        valueField: 'id',
                    }
                },
                {
                    field: 'created',
                    searchable: false
                }
            ]
        };
    }

    exprBuilder(param, value) {
        switch (param) {
        case 'clientName':
            return {'cl.clientName': {like: `%${value}%`}};
        case 'clientFk':
        case 'claimStateFk':
        case 'workerFk':
            return {[`cl.${param}`]: value};
        }
    }

    stateColor(claim) {
        switch (claim.description) {
        case 'Pendiente':
            return 'warning';
        case 'Gestionado':
            return 'notice';
        case 'Resuelto':
            return 'success';
        }
    }

    preview(claim) {
        this.claimSelected = claim;
        this.$.summary.show();
    }

    reload() {
        this.$.model.refresh();
    }
}

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