import ngModule from '../module'; class Controller { constructor($http, $scope, $stateParams, $translate, vnApp) { this.$http = $http; this.$scope = $scope; this.$stateParams = $stateParams; this.$translate = $translate; this.vnApp = vnApp; this.removedPackages = []; } submit() { let query = `/ticket/api/TicketPackagings/crud`; let packagesObj = { delete: this.removedPackages, create: [], update: [] }; this.packages.forEach(item => { if (typeof item.id === 'undefined') packagesObj.create.push(item); if (typeof item.id !== 'undefined' && !this.packageEquals(item, this.oldPackages[item.id])) packagesObj.update.push(item); }); this.$scope.watcher.check(); this.$http.post(query, packagesObj).then(res => { this.$scope.watcher.notifySaved(); this.$scope.model.refresh(); }); } removePackage(index) { if (this.packages[index] && this.packages[index].id) this.removedPackages.push(this.packages[index].id); this.packages.splice(index, 1); } addPackage() { let data = { packagingFk: null, quantity: null, created: Date.now(), ticketFk: this.ticket.id }; this.packages.push(data); } getPackages() { this.packages = this.$scope.model.data; this.setOldPackages(); } setOldPackages() { this.oldPackages = []; this.removedPackages = []; this.packages.forEach(item => { this.oldPackages[item.id] = Object.assign({}, item); }); } packageEquals(newPackage, oldPackage) { return newPackage.packagingFk === oldPackage.packagingFk && newPackage.quantity == oldPackage.quantity; } } Controller.$inject = ['$http', '$scope', '$stateParams', '$translate', 'vnApp']; ngModule.component('vnTicketPackageIndex', { template: require('./index.html'), controller: Controller, bindings: { ticket: '<' } });