salix/services/loopback/common/models/address.js

50 lines
1.5 KiB
JavaScript

var UserError = require('../helpers').UserError;
var getFinalState = require('../helpers').getFinalState;
var isMultiple = require('../helpers').isMultiple;
module.exports = function(Self) {
Self.validate('isDefaultAddress', isActive,
{message: 'Unable to default a disabled consignee'}
);
function isActive(err) {
if (!this.isActive && this.isDefaultAddress) err();
}
Self.beforeRemote('findById', function(ctx, modelInstance, next) {
ctx.args.filter = {
include: [{
relation: 'province',
scope: {
fields: ['id', 'name']
}
}, {
relation: 'agency',
scope: {
fields: ['id', 'name']
}
}]
};
next();
});
// Helpers
Self.observe('before save', async function(ctx) {
if (isMultiple(ctx)) return;
let changes = ctx.data || ctx.instance;
let finalState = getFinalState(ctx);
if (changes.isActive == false && finalState.isDefaultAddress)
throw new UserError('The default consignee can not be unchecked');
if (changes.isDefaultAddress == true && finalState.isActive != false) {
let filter = {
clientFk: finalState.clientFk,
isDefaultAddress: {neq: false}
};
await Self.updateAll(filter, {isDefaultAddress: false});
}
});
};