import ngModule from '../module';
import Descriptor from 'salix/components/descriptor';

class Controller extends Descriptor {
    get entry() {
        return this.entity;
    }

    set entry(value) {
        this.entity = value;
    }

    get travelFilter() {
        let travelFilter;
        const entryTravel = this.entry && this.entry.travel;

        if (entryTravel && entryTravel.agencyModeFk) {
            travelFilter = this.entry && JSON.stringify({
                agencyModeFk: entryTravel.agencyModeFk
            });
        }
        return travelFilter;
    }

    get entryFilter() {
        let entryTravel = this.entry && this.entry.travel;

        if (!entryTravel || !entryTravel.landed) return null;

        const date = new Date(entryTravel.landed);
        date.setHours(0, 0, 0, 0);

        const from = new Date(date.getTime());
        from.setDate(from.getDate() - 10);

        const to = new Date(date.getTime());
        to.setDate(to.getDate() + 10);

        return JSON.stringify({
            supplierFk: this.entry.supplierFk,
            from,
            to
        });
    }

    loadData() {
        const filter = {
            include: [
                {
                    relation: 'travel',
                    scope: {
                        fields: ['id', 'landed', 'agencyModeFk', 'warehouseOutFk'],
                        include: [
                            {
                                relation: 'agency',
                                scope: {
                                    fields: ['name']
                                }
                            },
                            {
                                relation: 'warehouseOut',
                                scope: {
                                    fields: ['name']
                                }
                            },
                            {
                                relation: 'warehouseIn',
                                scope: {
                                    fields: ['name']
                                }
                            }
                        ]
                    }
                },
                {
                    relation: 'supplier',
                    scope: {
                        fields: ['id', 'nickname']
                    }
                }
            ]
        };

        return this.getData(`Entries/${this.id}`, {filter})
            .then(res => this.entity = res.data);
    }

    showEntryReport() {
        this.vnReport.show(`Entries/${this.id}/entry-order-pdf`);
    }
}

ngModule.vnComponent('vnEntryDescriptor', {
    template: require('./index.html'),
    controller: Controller,
    bindings: {
        entry: '<'
    }
});