diff --git a/modules/client/back/methods/client/checkDuplicated.js b/modules/client/back/methods/client/checkDuplicated.js new file mode 100644 index 0000000000..acaffbf428 --- /dev/null +++ b/modules/client/back/methods/client/checkDuplicated.js @@ -0,0 +1,64 @@ +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); + } + }; +}; diff --git a/modules/client/front/basic-data/index.js b/modules/client/front/basic-data/index.js index 0557332895..418663952c 100644 --- a/modules/client/front/basic-data/index.js +++ b/modules/client/front/basic-data/index.js @@ -12,6 +12,7 @@ export default class Controller extends Section { return this.$.watcher.submit().then(() => { const query = `Clients/updatePortfolio`; this.$http.get(query); + this.$http.get(`Clients/${this.$params.id}/checkDuplicatedData`); }); } } diff --git a/modules/client/front/create/index.js b/modules/client/front/create/index.js index 1aa21c91e7..fb864282e6 100644 --- a/modules/client/front/create/index.js +++ b/modules/client/front/create/index.js @@ -10,9 +10,9 @@ export default class Controller extends Section { } onSubmit() { - return this.$.watcher.submit().then( - json => this.$state.go('client.card.basicData', {id: json.data.id}) - ); + return this.$.watcher.submit() + .then(json => this.$state.go('client.card.basicData', {id: json.data.id})) + .then(() => this.$http.get(`Clients/${this.client.id}/checkDuplicatedData`)); } get province() {