import ngModule from '../module'; class Controller { constructor($, $http, vnApp, $translate, aclService, $httpParamSerializer) { this.$http = $http; this.vnApp = vnApp; this.$translate = $translate; this.$ = $; this.aclService = aclService; this.$httpParamSerializer = $httpParamSerializer; this.moreOptions = [ {callback: this.showRouteReport, name: 'Show route report'}, {callback: this.sendRouteReport, name: 'Send route report'}, {callback: this.showUpdateVolumeDialog, name: 'Update volume', acl: 'deliveryBoss'} ]; } onMoreOpen() { let options = this.moreOptions.filter(option => { const hasAclProperty = Object.hasOwnProperty.call(option, 'acl'); return !hasAclProperty || (hasAclProperty && this.aclService.hasAny([option.acl])); }); this.$.moreButton.data = options; } set quicklinks(value = {}) { this._quicklinks = Object.assign(value, this._quicklinks); } get quicklinks() { return this._quicklinks; } onMoreChange(callback) { callback.call(this); } showRouteReport() { const user = this.route.worker.user; const params = { clientId: user.id, routeId: this.route.id }; const serializedParams = this.$httpParamSerializer(params); let url = `api/report/driver-route?${serializedParams}`; window.open(url); } sendRouteReport() { const user = this.route.worker.user; const params = { recipient: user.emailUser.email, clientId: user.id, routeId: this.route.id }; const serializedParams = this.$httpParamSerializer(params); const url = `email/driver-route?${serializedParams}`; this.$http.get(url).then(() => { this.vnApp.showSuccess(this.$translate.instant('Report sent')); }); } showUpdateVolumeDialog() { this.$.updateVolumeConfirmation.show(); } updateVolume(response) { if (response === 'accept') { let url = `Routes/${this.route.id}/updateVolume`; this.$http.post(url).then(() => { this.vnApp.showSuccess(this.$translate.instant('Volume updated')); if (this.card) this.card.reload(); }); } } } Controller.$inject = ['$scope', '$http', 'vnApp', '$translate', 'aclService', '$httpParamSerializer']; ngModule.component('vnRouteDescriptor', { template: require('./index.html'), bindings: { route: '<', quicklinks: '<' }, require: { card: '^?vnRouteCard' }, controller: Controller });