import ngModule from '../../module'; import Section from 'salix/components/section'; import './style.scss'; import UserError from 'core/lib/user-error'; class Controller extends Section { constructor($element, $) { super($element, $); this.dms = { files: [], hasFile: false, hasFileAttached: false }; } get route() { return this._route; } set route(value) { this._route = value; this.setDefaultParams(); this.getAllowedContentTypes(); } $onChanges() { if (this.$params && this.$params.q) this.params = JSON.parse(this.$params.q); } getAllowedContentTypes() { this.$http.get('DmsContainers/allowedContentTypes').then(res => { const contentTypes = res.data.join(', '); this.allowedContentTypes = contentTypes; }); } get contentTypesInfo() { return this.$t('ContentTypesInfo', { allowedContentTypes: this.allowedContentTypes }); } setDefaultParams() { const params = {filter: { where: {code: 'invoiceIn'} }}; this.$http.get('DmsTypes/findOne', {params}).then(res => { const dmsType = res.data && res.data; const companyId = this.vnConfig.companyFk; const warehouseId = this.vnConfig.warehouseFk; const defaultParams = { warehouseId: warehouseId, companyId: companyId, dmsTypeId: dmsType.id, description: this.params.supplierName }; this.dms = Object.assign(this.dms, defaultParams); }); } onSubmit() { if (this.dms.files.length > 1) throw new UserError('You cannot attach more than one document'); const query = `dms/uploadFile`; const options = { method: 'POST', url: query, params: this.dms, headers: { 'Content-Type': undefined }, transformRequest: files => { const formData = new FormData(); formData.append(files[0].name, files[0]); return formData; }, data: this.dms.files }; this.$http(options).then(res => { if (res) { const addedDms = res.data; this.$.watcher.updateOriginalData(); const params = { rows: this.params.rows, dms: addedDms }; this.$http.post('AgencyTerms/createInvoiceIn', params) .then(() => { this.$state.go('route.agencyTerm.index'); this.vnApp.showSuccess(this.$t('Data saved!')); }); } }); } onFileChange(files) { let hasFileAttached = false; if (files.length > 0) hasFileAttached = true; this.$.$applyAsync(() => { this.dms.hasFileAttached = hasFileAttached; }); } } Controller.$inject = ['$element', '$scope']; ngModule.vnComponent('vnAgencyTermCreateInvoiceIn', { template: require('./index.html'), controller: Controller, bindings: { route: '<' } });