From 80f3449839f8b872e2b1fb5cc5591b61cc543ed7 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 21 Mar 2022 17:39:56 +0100 Subject: [PATCH] =?UTF-8?q?Revisi=C3=B3n=20de=20notificaciones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notification/notification.controller.js | 122 +++++++++--------- modules/notification/notification.routes.js | 6 +- modules/notification/notification.service.js | 8 +- 3 files changed, 67 insertions(+), 69 deletions(-) diff --git a/modules/notification/notification.controller.js b/modules/notification/notification.controller.js index 53485f1..aaae669 100644 --- a/modules/notification/notification.controller.js +++ b/modules/notification/notification.controller.js @@ -23,10 +23,10 @@ const controllerOptions = { MODULE_NAME }; async function _sendNotificationAllActiveUsers(notification) { let limit = 4; let page = 1; - - let totalRows = 0; + + let totalRows = 0; let totalPages = -1; - + do { let offset = (page - 1) * limit; let result = await userService._getActiveUserIds(offset, limit); @@ -36,18 +36,18 @@ async function _sendNotificationAllActiveUsers(notification) { } page = page + 1; - - let ids = result.rows.map(function(item) { return item.id }); + + let ids = result.rows.map(function (item) { return item.id }); notificationService.sendNotification(notification, ids); - + } while (page <= totalPages); return 'OK'; } async function _getUserIdsForEventId(eventId, segment) { - let userIds =[]; + let userIds = []; switch (segment) { //Todos los inscritos tanto invitados como libres @@ -69,7 +69,7 @@ async function _getUserIdsForEventId(eventId, segment) { userIds = await eventInscriptionService._getInscriptionByEvent(eventId); break; } - + return usersIdsComposer(userIds); } @@ -78,40 +78,40 @@ const extraControllers = { sendNotification: (config) => { - /** - * notificationSample = { - * "tittle": "título de la notificación", - * "message": "cuerpo de la notificación", - * "recipients": { - * OPCION 1- Unos usuarios determinados - * "userIds": ["*" | "f428a317-6d1f-4eda-aa3e-22baff3f48d7", ...] - * "segment": "ALL" | "LAST_YEAR" | "LAST_MONTH" - * - * OPCION 2 - A todos los usuarios inscritos a un evento, se puede segmentar - * "eventId": "xxx-xxx-xxx-xxx", - * "segment": "ALL" | "ALL_VALIDATED" | "ALL_NOT_VALIDATED" | - * "PARTNERS_ALL" | "PARTNERS_VALIDATED" | "PARTNERS_NOT_VALIDATED" | - * "COLLEGE_ALL" | "COLLEGE_VALIDATED" | "COLLEGE_NOT_VALIDATED" - * }, - * "data": { - * "type": "message", - * "title": "Título del mensaje", - * "message": "Cuerpo del mensaje", - * "button": { - * "caption": "Etiqueta del boton", - * "url": "https://www.site.es", - * "screen": "", - * "paramId": "23", - * } - * } - *} - */ + /** + * notificationSample = { + * "tittle": "título de la notificación", + * "message": "cuerpo de la notificación", + * "recipients": { + * OPCION 1- Unos usuarios determinados + * "userIds": ["*" | "f428a317-6d1f-4eda-aa3e-22baff3f48d7", ...] + * "segment": "ALL" | "LAST_YEAR" | "LAST_MONTH" + * + * OPCION 2 - A todos los usuarios inscritos a un evento, se puede segmentar + * "eventId": "xxx-xxx-xxx-xxx", + * "segment": "ALL" | "ALL_VALIDATED" | "ALL_NOT_VALIDATED" | + * "PARTNERS_ALL" | "PARTNERS_VALIDATED" | "PARTNERS_NOT_VALIDATED" | + * "COLLEGE_ALL" | "COLLEGE_VALIDATED" | "COLLEGE_NOT_VALIDATED" + * }, + * "data": { + * "type": "message", + * "title": "Título del mensaje", + * "message": "Cuerpo del mensaje", + * "button": { + * "caption": "Etiqueta del boton", + * "url": "https://www.site.es", + * "screen": "", + * "paramId": "23", + * } + * } + *} + */ return async (req, res, next) => { config = config || { scopes: [], }; - + const context = buildContext(req, config); let params = extractParamsFromRequest(req, res); @@ -130,21 +130,21 @@ const extraControllers = { } // Evento? - if (body.recipients.eventId) { + if (body.recipients.eventId) { eventId = body.recipients.eventId; - segment = body.recipients.segment; + segment = body.recipients.segment; } else if (body.recipients.userIds) { userIds = body.recipients.userIds; - segment = body.recipients.segment; + segment = body.recipients.segment; } else { return handleErrorResponse(controllerOptions.MODULE_NAME, 'sendNotification', new Error('Missing user Ids or event Ids'), res) } - try { + try { - let notification = notificationHelper.createNotification ({ - ...body, + let notification = notificationHelper.createNotification({ + ...body, userId: context.user.id }); @@ -161,14 +161,14 @@ const extraControllers = { _userIds = await _getUserIdsForEventId(eventId, segment); } else { return handleErrorResponse(controllerOptions.MODULE_NAME, 'sendNotification', new Error('Missing event and segment'), res) - } + } } if (_userIds) { receipt = notificationService.sendNotification(notification, _userIds); } } - + /*let getUserIds = async () => { if (userIds) { @@ -200,22 +200,21 @@ const extraControllers = { } else { return handleErrorResponse(controllerOptions.MODULE_NAME, 'sendNotification', new Error('Missing event and segment'), res) } - } */ - + } */ + //receipt = notificationService.sendNotification(notification, await getUserIds()); + return handleResultResponse(receipt, null, null, res, httpStatus.OK); } catch (error) { console.error(error); return handleErrorResponse(controllerOptions.MODULE_NAME, 'sendNotification', error, res) - } finally { - return handleResultResponse(receipt, null, null, res, httpStatus.OK); } } }, updateNotificationsWithReceipts: (config) => { return async (req, res, next) => { - config = config || { + /*config = config || { scopes: [], }; @@ -224,8 +223,8 @@ const extraControllers = { let getNotificationsWithoutReceipt = async () => { let params = { - where: { } - }; + where: {} + }; return await notificationDetailService.fetchAll(params, context); } @@ -234,6 +233,7 @@ const extraControllers = { return Promise.all(userDeviceList.map(buildMessagePromise)) }) .then(sendNotificationsPromise) + */ } }, @@ -253,17 +253,16 @@ const extraControllers = { userId }; - let params = extractParamsFromRequest(req, res, { - includeAll: false, + let params = extractParamsFromRequest(req, res, { + includeAll: false, paginate: { limit: 1, page: 1 }, params: { - //userId, token: data.token, } }); // Buscamos el token y el usuario - console.log('>> Busco el usuario y el token', params.params); + console.log('>> Busco el token', params.params); let result = await userDeviceService.fetchOne(params, context); if (!result) { // Dar de alta el token @@ -272,16 +271,15 @@ const extraControllers = { } else { // Actualizar el token console.log('>> Actualizar el token', params.params, data, context); - result = await userDeviceService.update(params, { valid : 1 }, context); + result = await userDeviceService.update(params, { valid: 1 }, context); } - } catch(error) { + } catch (error) { console.error(error); - } finally { - // En todo caso devolver OK al cliente - return handleResultResponse('OK', null, null, res, httpStatus.OK); } + // En todo caso devolver OK al cliente + return handleResultResponse('OK', null, null, res, httpStatus.OK); } - }, + }, }; module.exports = generateControllers(notificationService, extraControllers, controllerOptions); \ No newline at end of file diff --git a/modules/notification/notification.routes.js b/modules/notification/notification.routes.js index 79b8464..8a71dee 100644 --- a/modules/notification/notification.routes.js +++ b/modules/notification/notification.routes.js @@ -1,6 +1,6 @@ const routes = require('express').Router(); -const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator'); +const { isAdministratorUser, isOptionalUser, isLoggedUser } = require('../../middlewares/accessValidator'); const SchemaValidator = require('../../middlewares/schemaValidator'); const PaginateMiddleware = require('../../middlewares/paginate'); const FieldMiddleware = require('../../middlewares/fields'); @@ -35,7 +35,7 @@ routes.get('/admin/notifications/:id', ); routes.post('/admin/notifications', - isAdministratorUser, + isAdministratorUser, SchemaValidator(pushSendEvent, true), notificationController.sendNotification({ scopes: ['defaultScope'] @@ -56,7 +56,7 @@ routes.post('/admin/notifications', );*/ routes.post('/notifications/devices', - //isLoggedUser, + isOptionalUser, SchemaValidator(deviceTokenInputType, true), notificationController.registerDevice() ); diff --git a/modules/notification/notification.service.js b/modules/notification/notification.service.js index bdd6106..8a0397b 100644 --- a/modules/notification/notification.service.js +++ b/modules/notification/notification.service.js @@ -33,7 +33,7 @@ const extraMethods = { data: data, }); }, - + sendNotification: (notification, userIds) => { @@ -132,14 +132,14 @@ const extraMethods = { - getNotificationsWithoutReceipt: async() => { + getNotificationsWithoutReceipt: async () => { }, updateNotificationsWithReceipts: async (receiptIds) => { - let receiptIdChunks = expo.chunkPushNotificationReceiptIds(receiptIds); - let xxx = await _getPushNotificationsResultAsync(receiptIdChunks); + //let receiptIdChunks = expo.chunkPushNotificationReceiptIds(receiptIds); + //let xxx = await _getPushNotificationsResultAsync(receiptIdChunks); } };