import ngModule from '../module'; class Controller { constructor($scope, vnToken, vnApp, $state, $translate, $http, aclService) { this.$scope = $scope; this.accessToken = vnToken.token; this.vnApp = vnApp; this.$state = $state; this.$translate = $translate; this.$http = $http; this.aclService = aclService; this.moreOptions = [ {callback: this.showInvoiceOutPdf, name: 'Show invoice out PDF'}, {callback: this.showDeleteInvoiceOutDialog, name: 'Delete InvoiceOut', acl: 'invoicing'}, {callback: this.showBookInvoiceOutDialog, name: 'Book invoice', acl: 'invoicing'} ]; } onMoreOpen() { let options = this.moreOptions.filter(option => { const hasAclProperty = Object.hasOwnProperty.call(option, 'acl'); return !hasAclProperty || (hasAclProperty && this.aclService.hasAny([option.acl])); }); this.$scope.moreButton.data = options; } onMoreChange(callback) { callback.call(this); } set invoiceOut(value) { this._invoiceOut = value; if (value) { this._quicklinks = { btnOne: { icon: 'icon-person', state: `client.card.summary({id: ${value.clientFk}})`, tooltip: 'Client card' }, btnTwo: { icon: 'icon-ticket', state: `ticket.index({q: '{"refFk": "${value.ref}"}'})`, tooltip: 'Invoice ticket list' } }; } } get invoiceOut() { return this._invoiceOut; } showInvoiceOutPdf() { let url = `api/InvoiceOuts/${this.invoiceOut.id}/download?access_token=${this.accessToken}`; window.open(url, '_blank'); } showDeleteInvoiceOutDialog() { this.$scope.deleteConfirmation.show(); } showBookInvoiceOutDialog() { this.$scope.bookConfirmation.show(); } deleteInvoiceOut(response) { if (response === 'ACCEPT') { const query = `/invoiceOut/api/InvoiceOuts/${this.invoiceOut.id}/delete`; this.$http.post(query).then(() => { this.vnApp.showSuccess(this.$translate.instant('InvoiceOut deleted')); this.$state.go('invoiceOut.index'); }); } } bookInvoiceOut(response) { if (response === 'ACCEPT') { const query = `/invoiceOut/api/InvoiceOuts/${this.invoiceOut.ref}/book`; this.$http.post(query).then(() => { this.vnApp.showSuccess(this.$translate.instant('InvoiceOut booked')); this.$state.go('invoiceOut.index'); }); } } set quicklinks(value = {}) { this._quicklinks = Object.assign(value, this._quicklinks); } get quicklinks() { return this._quicklinks; } } Controller.$inject = ['$scope', 'vnToken', 'vnApp', '$state', '$translate', '$http', 'aclService']; ngModule.component('vnInvoiceOutDescriptor', { template: require('./index.html'), bindings: { invoiceOut: '<', quicklinks: '<' }, controller: Controller });