salix/client/ticket/src/data/step-one/step-one.js

69 lines
1.8 KiB
JavaScript
Raw Normal View History

2018-04-04 11:56:16 +00:00
import ngModule from '../../module';
class Controller {
2018-05-22 06:14:16 +00:00
constructor($scope, $http, $translate, vnApp) {
2018-04-04 11:56:16 +00:00
this.$scope = $scope;
this.$http = $http;
this.$translate = $translate;
this.vnApp = vnApp;
}
$onInit() {
this.data.registerChild(this);
}
onChange() {
2018-05-22 06:14:16 +00:00
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,
2018-05-22 06:14:16 +00:00
addressFk: this.ticket.addressFk,
agencyModeFk: this.ticket.agencyModeFk
};
return this.$http.post(query, data).then(res => {
2018-05-22 06:14:16 +00:00
if (res.data)
this.ticket.sale = res.data;
2018-05-22 06:14:16 +00:00
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() {
2018-05-22 06:14:16 +00:00
return !this.ticket.clientFk || !this.ticket.addressFk || !this.ticket.agencyModeFk
|| !this.ticket.companyFk || !this.ticket.shipped || !this.ticket.landed;
2018-04-04 11:56:16 +00:00
}
}
2018-05-22 06:14:16 +00:00
Controller.$inject = ['$scope', '$http', '$translate', 'vnApp'];
2018-04-04 11:56:16 +00:00
ngModule.component('vnTicketDataStepOne', {
template: require('./step-one.html'),
controller: Controller,
2018-04-04 11:56:16 +00:00
bindings: {
ticket: '<'
},
require: {
data: '^vnTicketData'
}
2018-04-04 11:56:16 +00:00
});