salix/modules/route/front/tickets/index.js

182 lines
5.1 KiB
JavaScript
Raw Normal View History

2019-04-04 11:06:41 +00:00
import ngModule from '../module';
import './style.scss';
class Controller {
constructor($stateParams, $scope, $translate, $http, vnApp, $filter) {
2019-04-04 11:06:41 +00:00
this.$translate = $translate;
this.$stateParams = $stateParams;
this.$ = $scope;
2019-04-04 11:06:41 +00:00
this.$http = $http;
this.vnApp = vnApp;
this.$filter = $filter;
}
set route(value) {
this._route = value;
if (value)
this.buildPossibleTicketsFilter();
}
get route() {
return this._route;
2019-04-04 11:06:41 +00:00
}
get isChecked() {
if (this.tickets) {
for (let instance of this.tickets)
if (instance.checked) return true;
}
return false;
}
buildPossibleTicketsFilter() {
let minDate = new Date(this.route.finished);
minDate.setHours(0, 0, 0, 0);
let maxDate = new Date(this.route.finished);
maxDate.setHours(23, 59, 59, 59);
this.possibleTicketsFilter = {
where: {
zoneFk: this.route.zoneFk,
routeFk: null,
landed: {between: [minDate, maxDate]},
},
include: [
{
relation: 'warehouse',
scope: {
fields: ['name']
},
}, {
relation: 'address'
}
]
};
}
2019-04-04 11:06:41 +00:00
getHighestPriority() {
let highestPriority = Math.max(...this.$.model.data.map(tag => {
return tag.priority;
}));
return highestPriority + 1;
2019-04-04 11:06:41 +00:00
}
setPriority(id, priority) {
let params = {priority: priority};
let query = `Tickets/${id}/`;
2019-04-04 11:06:41 +00:00
this.$http.patch(query, params).then(() => {
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
this.$.model.refresh();
});
}
getSelectedItems(items) {
const selectedItems = [];
if (items) {
for (let i = 0; i < items.length; i++) {
if (items[i].checked)
selectedItems.push(items[i]);
2019-04-04 11:06:41 +00:00
}
}
return selectedItems;
2019-04-04 11:06:41 +00:00
}
goToBuscaman() {
// firstAddress is a temporal variable, will be replaced with #1298
let firstAddress = `46460 Av Espioca 100-46460 Silla`;
let addresses = firstAddress;
let lines = this.getSelectedItems(this.tickets);
2019-04-04 11:06:41 +00:00
let url = 'http://gps.buscalia.com/usuario/localizar.aspx?bmi=true&addr=';
lines.forEach(line => {
addresses = addresses + '+to:' + line.address.postalCode + ' ' + line.address.street + '-' + line.address.postalCode + ' ' + line.address.city;
});
window.open(url + addresses, '_blank');
}
showDeleteConfirm(id) {
this.selectedTicket = id;
2019-04-04 11:06:41 +00:00
this.$.confirm.show();
}
2019-06-06 11:50:12 +00:00
removeTicketFromRoute(response) {
2019-10-30 15:57:14 +00:00
if (response === 'accept') {
2019-04-04 11:06:41 +00:00
let params = {routeFk: null};
let query = `Tickets/${this.selectedTicket}/`;
2019-04-04 11:06:41 +00:00
this.$http.patch(query, params).then(() => {
2019-06-06 11:50:12 +00:00
this.vnApp.showSuccess(this.$translate.instant('Ticket removed from route'));
this.updateVolume();
2019-04-04 11:06:41 +00:00
});
}
}
2019-06-06 11:50:12 +00:00
updateVolume() {
let url = `Routes/${this.$stateParams.id}/updateVolume`;
2019-06-06 11:50:12 +00:00
this.$http.post(url).then(() => {
this.card.reload();
this.$.model.refresh();
});
}
2019-04-04 11:06:41 +00:00
guessPriority() {
let query = `Routes/${this.$stateParams.id}/guessPriority/`;
2019-04-04 11:06:41 +00:00
this.$http.get(query).then(() => {
this.vnApp.showSuccess(this.$translate.instant('Order changed'));
this.$.model.refresh();
});
}
showTicketDescriptor(event, ticketFk) {
this.$.ticketDescriptor.ticketFk = ticketFk;
this.$.ticketDescriptor.parent = event.target;
this.$.ticketDescriptor.show();
event.preventDefault();
}
showClientDescriptor(event, clientFk) {
this.$.clientDescriptor.clientFk = clientFk;
this.$.clientDescriptor.parent = event.target;
this.$.clientDescriptor.show();
event.preventDefault();
}
openPossibleTicketsDialog() {
this.$.possibleTicketsModel.refresh();
this.$.possibleTicketsDialog.show();
}
setTicketsRoute(response) {
2019-10-30 15:57:14 +00:00
if (response === 'accept') {
let tickets = this.getSelectedItems(this.possibleTickets);
for (let i = 0; i < tickets.length; i++) {
delete tickets[i].checked;
tickets[i].routeFk = this.route.id;
}
return this.$.possibleTicketsModel.save().then(() => {
this.$.model.data = this.$.model.data.concat(tickets);
});
}
return Promise.resolve();
}
2019-04-04 11:06:41 +00:00
}
Controller.$inject = ['$stateParams', '$scope', '$translate', '$http', 'vnApp', '$filter'];
2019-04-04 11:06:41 +00:00
ngModule.component('vnRouteTickets', {
template: require('./index.html'),
controller: Controller,
2019-06-06 11:50:12 +00:00
require: {
card: '^vnRouteCard'
},
bindings: {
route: '<'
}
2019-04-04 11:06:41 +00:00
});