import ngModule from '../../module'; class Controller { constructor($scope, $http, $state, $translate, vnApp) { this.$ = $scope; this.$http = $http; this.$state = $state; this.$stateParams = $state.params; this.$translate = $translate; this.vnApp = vnApp; } get ticket() { return this._ticket; } set ticket(value) { this._ticket = value; if (value) { this.setDefaultParams(); this.getAllowedContentTypes(); } } getAllowedContentTypes() { this.$http.get('ticketDms/allowedContentTypes').then(res => { const contentTypes = res.data.join(', '); this.allowedContentTypes = contentTypes; }); } get contentTypesInfo() { return this.$translate.instant('ContentTypesInfo', { allowedContentTypes: this.allowedContentTypes }); } setDefaultParams() { const path = `Dms/${this.$stateParams.dmsId}`; this.$http.get(path).then(res => { const dms = res.data && res.data; this.dms = { reference: dms.reference, warehouseId: dms.warehouseFk, companyId: dms.companyFk, dmsTypeId: dms.dmsTypeFk, description: dms.description, hasFile: dms.hasFile, hasFileAttached: false, files: [] }; }); } onSubmit() { const query = `dms/${this.$stateParams.dmsId}/updateFile`; const options = { method: 'POST', url: query, params: this.dms, headers: { 'Content-Type': undefined }, transformRequest: files => { const formData = new FormData(); for (let i = 0; i < files.length; i++) formData.append(files[i].name, files[i]); return formData; }, data: this.dms.files }; this.$http(options).then(res => { if (res) { this.vnApp.showSuccess(this.$translate.instant('Data saved!')); this.$.watcher.updateOriginalData(); this.$state.go('ticket.card.dms.index'); } }); } onFileChange(files) { let hasFileAttached = false; if (files.length > 0) hasFileAttached = true; this.$.$applyAsync(() => { this.dms.hasFileAttached = hasFileAttached; }); } } Controller.$inject = ['$scope', '$http', '$state', '$translate', 'vnApp']; ngModule.component('vnTicketDmsEdit', { template: require('./index.html'), controller: Controller, bindings: { ticket: '<' } });