salix/modules/client/front/address/index/index.js

98 lines
2.7 KiB
JavaScript
Raw Permalink Normal View History

2018-05-23 12:26:51 +00:00
import ngModule from '../../module';
2020-03-17 10:17:50 +00:00
import Section from 'salix/components/section';
2019-09-02 07:25:18 +00:00
import './style.scss';
2020-03-17 10:17:50 +00:00
class Controller extends Section {
constructor($element, $) {
super($element, $);
2019-09-02 07:25:18 +00:00
this.filter = {
fields: [
'id',
'isDefaultAddress',
'isActive',
'nickname',
'street',
'city',
'provinceFk',
'phone',
'mobile',
2020-08-24 05:54:30 +00:00
'isEqualizated',
'isLogifloraAllowed',
2020-08-24 05:54:30 +00:00
'postalCode'
2019-09-02 07:25:18 +00:00
],
order: [
'isDefaultAddress DESC',
'isActive DESC',
'nickname ASC'],
include: [
{
relation: 'observations',
scope: {
include: 'observationType'
}
}, {
relation: 'province',
scope: {
2024-01-15 08:03:56 +00:00
fields: ['id', 'name', 'countryFk'],
include: {
relation: 'country',
scope: {
2024-06-26 07:03:06 +00:00
fields: ['id', 'name']
2024-01-15 08:03:56 +00:00
}
}
2019-09-02 07:25:18 +00:00
}
}
]
};
}
onStarClick(event) {
event.stopPropagation();
event.preventDefault();
}
2018-02-08 08:04:29 +00:00
setDefault(address) {
2020-03-17 10:17:50 +00:00
let query = `Clients/${this.$params.id}`;
let params = {defaultAddressFk: address.id};
this.$http.patch(query, params).then(res => {
if (res.data) {
this.client.defaultAddressFk = res.data.defaultAddressFk;
this.sortAddresses();
this.vnApp.showSuccess(this.$t('Data saved!'));
}
});
}
isDefaultAddress(address) {
2019-10-01 14:17:57 +00:00
return this.client && this.client.defaultAddressFk === address.id;
}
/**
* Sort address by default address
*/
sortAddresses() {
if (!this.client || !this.addresses) return;
2019-06-18 07:34:32 +00:00
this.addresses = this.addresses.sort((a, b) => {
return this.isDefaultAddress(b) - this.isDefaultAddress(a);
});
2017-09-28 12:34:18 +00:00
}
2020-06-12 08:53:33 +00:00
exprBuilder(param, value) {
switch (param) {
case 'search':
return /^\d+$/.test(value)
? {id: value}
: {nickname: {like: `%${value}%`}};
}
}
2017-09-28 12:34:18 +00:00
}
2020-03-17 10:17:50 +00:00
Controller.$inject = ['$element', '$scope'];
2017-09-28 12:34:18 +00:00
ngModule.vnComponent('vnClientAddressIndex', {
2018-05-23 12:26:51 +00:00
template: require('./index.html'),
controller: Controller,
bindings: {
client: '<'
}
2017-06-03 11:01:47 +00:00
});