import ngModule from '../../module'; class Controller { constructor($scope, $http, $translate, vnApp) { this.$scope = $scope; this.$http = $http; this.$translate = $translate; this.vnApp = vnApp; } $onInit() { this.data.registerChild(this); } onChange() { if (this.ticket) this.ticket.addressFk = null; } getAddresses() { if (this.ticket) return `/api/Clients/${this.ticket.clientFk}/addresses`; } async onStepChange(state) { if (this.isFormInvalid()) return this.vnApp.showError( this.$translate.instant('Some fields are invalid') ); let query = `/ticket/api/sales/${this.ticket.id}/priceDifference`; let data = { landed: this.ticket.landed, addressFk: this.ticket.addressFk, agencyModeFk: this.ticket.agencyModeFk }; return this.$http.post(query, data).then(res => { if (res.data) this.ticket.sale = res.data; return true; }, res => { if (res.data.error.message === 'NO_AGENCY_AVAILABLE') this.vnApp.showError( this.$translate.instant(`There's no available agency for this landing date`) ); }); } isFormInvalid() { return !this.ticket.clientFk || !this.ticket.addressFk || !this.ticket.agencyModeFk || !this.ticket.companyFk || !this.ticket.shipped || !this.ticket.landed; } } Controller.$inject = ['$scope', '$http', '$translate', 'vnApp']; ngModule.component('vnTicketDataStepOne', { template: require('./step-one.html'), controller: Controller, bindings: { ticket: '<' }, require: { data: '^vnTicketData' } });