This commit is contained in:
David Arranz 2019-10-31 13:45:18 +01:00
parent 80142d078a
commit 9fbd11b169
4 changed files with 18 additions and 10 deletions

View File

@ -1,6 +1,6 @@
'use strict';
const httpStatus = require('http-status');
const moment = require('moment');
const generateControllers = require('../../core/controllers');
const { buildContext } = require('../../core/controllers');
const notificationService = require('./notification.service');
@ -45,7 +45,7 @@ const extraControllers = {
let sendNotificationsPromise = (messages) => notificationService.sendNotification(messages);
let disableUserDevicePromise = (token) => userDeviceService.update({ params: {
token: token,
}}, { valid: false }, context);
}}, { valid: 0, invalidated: moment() }, context);
let disableInvalidUserDevicesPromise = (userDevices) => {
return new Promise(function (resolve) {
@ -76,11 +76,13 @@ const extraControllers = {
let saveResponseStatusPromise = (messages, tickets) => notificationDetailService.saveNotificationDetails(messages, tickets);
const notificationRecord = {
date: moment(),
title: req.body.title,
body: req.body.message,
ttl: req.body.ttl || undefined,
priority: req.body.priority || 'default',
priority: req.body.priority || 'default',
data: req.body.data || { userIds: req.body.userIds },
userId: context.user.id,
};
let buildMessagesPromise = (userDevices) => {
@ -95,9 +97,10 @@ const extraControllers = {
priority: notificationRecord.priority,
userId: userDevice.userId,
to: userDevice.token,
sound: 'default',
notificationId: notificationRecord.id,
data: notificationRecord.data,
_displayInForeground: true,
sound: 'default',
});
});
@ -196,7 +199,7 @@ const extraControllers = {
} else {
// Actualizar el token
console.log('>> Actualizar el token', params.params, data, context);
result = await userDeviceService.update(params.params, data, context);
result = await userDeviceService.update(params, { valid : 1 }, context);
}
} catch(error) {
console.error(error);

View File

@ -5,6 +5,10 @@ module.exports = function (sequelize, DataTypes) {
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
date: {
type: DataTypes.DATE,
allowNull: false,
},
title: {
type: DataTypes.STRING,
allowNull: true,

View File

@ -4,6 +4,7 @@ const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessV
const SchemaValidator = require('../../middlewares/schemaValidator');
const PaginateMiddleware = require('../../middlewares/paginate');
const FieldMiddleware = require('../../middlewares/fields');
const SortMiddleware = require('../../middlewares/sort');
const notificationController = require('./notification.controller');
const { deviceTokenInputType, notificationSendType } = require('./notification.validations');
@ -11,18 +12,19 @@ const generalInvalidFields = [
'createdAt', 'updatedAt',
];
routes.get('/notifications',
routes.get('/admin/notifications',
isAdministratorUser,
FieldMiddleware.middleware({
invalidFields: generalInvalidFields
}),
SortMiddleware.middleware({ default: "-date" }),
PaginateMiddleware.middleware(),
notificationController.find({
scopes: ['defaultScope']
})
);
routes.get('/notifications/:id',
routes.get('/admin/notifications/:id',
isAdministratorUser,
FieldMiddleware.middleware({
invalidFields: generalInvalidFields
@ -32,9 +34,9 @@ routes.get('/notifications/:id',
})
);
routes.post('/notifications',
routes.post('/admin/notifications',
isAdministratorUser,
SchemaValidator(notificationSendType, true),
SchemaValidator(notificationSendType, true),
notificationController.sendNotification({
scopes: ['defaultScope']
})

View File

@ -1,4 +1,3 @@
const moment = require('moment');
const { Expo } = require('expo-server-sdk');
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
const models = require('../../core/models');