diff --git a/helpers/sendinblue.helper.js b/helpers/sendinblue.helper.js index 6970d94..04f8146 100644 --- a/helpers/sendinblue.helper.js +++ b/helpers/sendinblue.helper.js @@ -93,6 +93,33 @@ function _createMember(member) { }); }; +function _updateMember(email, member) { + const api = new SibApiV3Sdk.ContactsApi(); + + return new Promise(function (resolve, reject) { + const updateContact = new SibApiV3Sdk.UpdateContact(); + + updateContact.attributes = { + NOMBRE: member.name, + APELLIDOS: member.surname, + SMS: member.phone, + EMAIL: member.email, + ENTITYNAME: (member.entity) ? member.entity.name : '', + } + + api.updateContact(email, updateContact) + .then(function (data) { + console.debug('API called successfully. Returned data: ' + data); + resolve(updateContact); + }) + .catch(function (error) { + console.error(error); + reject(error); + }); + }); +}; + + function _addMemberToList(member, listId) { const api = new SibApiV3Sdk.ContactsApi(); @@ -157,7 +184,7 @@ function getLists() { }; -function addMember(listId, member) { +function addMemberToList(listId, member) { return new Promise(function (resolve, reject) { _createMember(member) .then(function (contact) { @@ -174,15 +201,20 @@ function addMember(listId, member) { }) }; -function deleteMember(listId, member) { +function deleteMemberFromList(listId, member) { return _removeMemberFromList(member, listId); } +function updateMemberByEmail(userEmail, userData) { + return _updateMember(userEmail, userData); +} + module.exports = { sendEmailTransactional, getLists, - addMember, - deleteMember, + addMemberToList, + deleteMemberFromList, + updateMemberByEmail } diff --git a/modules/auth/auth.controller.js b/modules/auth/auth.controller.js index b72bc0e..25fbc16 100644 --- a/modules/auth/auth.controller.js +++ b/modules/auth/auth.controller.js @@ -8,6 +8,7 @@ const crypto = require("crypto"); const securityHelper = require("../../helpers/security.helper"); const authService = require("./auth.service"); const userService = require("./user.service"); +const marketing = require("../../helpers/sendinblue.helper"); const eventInscriptionService = require("../events/events_inscriptions.service"); const { RequestContactImportNewList } = require("sib-api-v3-sdk"); moment.locale("es"); @@ -167,23 +168,23 @@ async function register(req, res, next) { console.log("COMPROBAMOS SI EXISTE EN NUESTRO SISTEMA", values.phone); let newUser = await authService.extraMethods.findUserByPhone(values.phone); + const data = { + //refresh_token: tokens.refreshToken, + phone: req.body.phone, + fbuid: req.body.fbuid, + email: req.body.email, + name: req.body.name, + surname: req.body.surname, + entityId: req.body.entityid, + accessibility: req.body.accessibility, + profile: req.body.profile, + app_version: appVersion, + lastlogin: moment().utc(), + }; + if (!newUser) { console.log("NO EXISTE"); try { - const data = { - //refresh_token: tokens.refreshToken, - phone: req.body.phone, - fbuid: req.body.fbuid, - email: req.body.email, - name: req.body.name, - surname: req.body.surname, - entityId: req.body.entityid, - accessibility: req.body.accessibility, - profile: req.body.profile, - app_version: appVersion, - lastlogin: moment().utc(), - }; - newUser = await authService.extraMethods.createUser(data); console.log("CREAMOS EL USUARIO EN NUESTRO SISTEMA", newUser); } catch (error) { @@ -195,6 +196,27 @@ async function register(req, res, next) { res ); } + } else { + console.log("EXISTE"); + try { + const oldUserData = newUser; + + newUser = await authService.extraMethods.updateUser(newUser.id, data); + console.log(newUser); + marketing.updateMemberByEmail(oldUserData.email, newUser); + + console.log("MODIFICAMOS EL USUARIO EN NUESTRO SISTEMA", newUser); + } catch (error) { + console.error(error); + return controllerHelper.handleErrorResponse( + MODULE_NAME, + register.name, + error, + res + ); + } + + } if (newUser) { @@ -206,7 +228,6 @@ async function register(req, res, next) { newUser.id, appVersion ); - console.log("PRUEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEBA>>>> ", result); newUser.app_version = appVersion; } } @@ -490,6 +511,24 @@ async function getOrCreateUser(req, res, next) { next(); } +async function deleteUser(req, res, next) { + const params = controllerHelper.extractParamsFromRequest(req, res, {}); + let dataUser = { + id: req.body ? req.body.id : null, + phone: req.body ? req.body.phone : null, //((req.body.phone != '+34') ? req.body.phone : null), lo quitamos de momento por la de movistar + email: req.body ? req.body.email : null, + }; + + const resultCount = await authService.deleteUser(dataUser.id, dataUser.email, dataUser.phone); + if (resultCount < 1) { + // No se ha encontrado + return controllerHelper.handleResultResponse( + "No se ha podido encontrar el usuario", null, params, res, httpStatus.NOT_FOUND); + } + + return controllerHelper.handleResultResponse(resultCount, resultCount, params, res, httpStatus.OK); +} + module.exports = { login, loginWithPhone, @@ -500,5 +539,6 @@ module.exports = { adminVerify, verify, getOrCreateUser, + deleteUser, MODULE_NAME, }; diff --git a/modules/auth/auth.service.js b/modules/auth/auth.service.js index f5aa9fc..23d0cf1 100644 --- a/modules/auth/auth.service.js +++ b/modules/auth/auth.service.js @@ -52,6 +52,31 @@ const extraMethods = { { where: { id: userId } } ); }, + + + updateUser: async (userId, params, context) => { + let result = await models.User.update(params, { + where: { id: userId } + }); + + return await extraMethods.findUser({ + id: userId + } + ); + + }, + + + deleteUser: async (userId, userEmail, userPhone) => { + return await models.User.destroy({ + where: { + id: userId, + email: userEmail, + userPhone: userPhone, + entityLevel: 1, + } + }); + } }; module.exports = { diff --git a/modules/events/marketing_list.service.js b/modules/events/marketing_list.service.js index 86ef66f..2a90fa4 100644 --- a/modules/events/marketing_list.service.js +++ b/modules/events/marketing_list.service.js @@ -77,7 +77,7 @@ async function _addMember(inscriptionDTO) { resolve(inscriptionDTO); } else { marketing - .addMember(inscriptionDTO.event_marketing_list, inscriptionDTO) + .addMemberToList(inscriptionDTO.event_marketing_list, inscriptionDTO) .then(function (result) { resolve(result.ID); }) @@ -99,7 +99,7 @@ async function _deleteMember(idLista, email) { if (!idLista || !email) { resolve(); } else { - resolve(marketing.deleteMember(idLista, email)); + resolve(marketing.deleteMemberFromList(idLista, email)); } }); }