65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
module.exports = Self => {
|
|
Self.remoteMethod('checkDuplicatedData', {
|
|
description: 'Checks if a client has same email, mobile or phone than other client and send an email',
|
|
accepts: [{
|
|
arg: 'id',
|
|
type: 'number',
|
|
required: true,
|
|
description: 'The client id'
|
|
}],
|
|
returns: {
|
|
type: 'object',
|
|
root: true
|
|
},
|
|
http: {
|
|
verb: 'GET',
|
|
path: '/:id/checkDuplicatedData'
|
|
}
|
|
});
|
|
|
|
Self.checkDuplicatedData = async function(id, options) {
|
|
const myOptions = {};
|
|
|
|
if (typeof options == 'object')
|
|
Object.assign(myOptions, options);
|
|
|
|
const client = await Self.app.models.Client.findById(id, myOptions);
|
|
|
|
const emails = client.email ? client.email.split(',') : null;
|
|
|
|
const findParams = [];
|
|
if (emails.length) {
|
|
for (let email of emails)
|
|
findParams.push({email: email});
|
|
}
|
|
|
|
if (client.phone)
|
|
findParams.push({phone: client.phone});
|
|
|
|
if (client.mobile)
|
|
findParams.push({mobile: client.mobile});
|
|
|
|
const filterObj = {
|
|
where: {
|
|
and: [
|
|
{or: findParams},
|
|
{id: {neq: client.id}}
|
|
]
|
|
}
|
|
};
|
|
|
|
const clientSameData = await Self.findOne(filterObj, myOptions);
|
|
|
|
if (clientSameData) {
|
|
await Self.app.models.Mail.create({
|
|
receiver: 'direccioncomercial@verdnatura.es',
|
|
subject: `Cliente con email/teléfono/móvil duplicados`,
|
|
body: 'El cliente ' + client.id + ' comparte alguno de estos datos con el cliente ' + clientSameData.id +
|
|
'\n- Email: ' + client.email +
|
|
'\n- Teléfono: ' + client.phone +
|
|
'\n- Móvil: ' + client.mobile
|
|
}, myOptions);
|
|
}
|
|
};
|
|
};
|