import ngModule from '../module'; import Section from 'salix/components/section'; import './style.scss'; class Controller extends Section { $onInit() { this.setParams(); } $postLink() { this.deliveryMethodFk = 'delivery'; } setParams() { const hasParams = this.$params.deliveryMethodFk || this.$params.geoFk || this.$params.agencyModeFk; if (hasParams) { if (this.$params.deliveryMethodFk) this.deliveryMethodFk = this.$params.deliveryMethodFk; if (this.$params.geoFk) this.geoFk = this.$params.geoFk; if (this.$params.agencyModeFk) this.agencyModeFk = this.$params.agencyModeFk; this.fetchData(); } } fetchData() { const params = { deliveryMethodFk: this.deliveryMethodFk, geoFk: this.geoFk, agencyModeFk: this.agencyModeFk }; this.$.data = null; this.$http.get(`Zones/getEvents`, {params}) .then(res => { let data = res.data; this.$.data = data; if (!data.events.length) this.vnApp.showMessage(this.$t('No service for the specified zone')); this.$state.go(this.$state.current.name, params); }); } get deliveryMethodFk() { return this._deliveryMethodFk; } set deliveryMethodFk(value) { this._deliveryMethodFk = value; let filter; if (value === 'pickUp') filter = {where: {code: 'PICKUP'}}; else filter = {where: {code: {inq: ['DELIVERY', 'AGENCY']}}}; this.$http.get(`DeliveryMethods`, {filter}).then(res => { const deliveryMethods = res.data.map(deliveryMethod => deliveryMethod.id); this.agencyFilter = {deliveryMethodFk: {inq: deliveryMethods}}; }); } onSelection($event, $events, $days) { if (!$events.length) return; const day = $days[0]; const zoneIds = []; for (let event of $events) zoneIds.push(event.zoneFk); const params = { zoneIds: zoneIds, date: day }; this.$http.post(`Zones/getZoneClosing`, params) .then(res => this.zoneClosing = res.data) .then(() => this.$.zoneEvents.show($event.target)); } preview(zone) { this.selectedZone = zone; this.$.summary.show(); } } ngModule.vnComponent('vnZoneDeliveryDays', { template: require('./index.html'), controller: Controller });