app2-api/modules/auth/user.service.js

112 lines
3.5 KiB
JavaScript

/* global User */
'use strict';
const _ = require('lodash');
const moment = require('moment');
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
const models = require('../../core/models');
const Sequelize = require('sequelize');
moment.locale('es');
const extraMethods = {
_getUserByEmail: async (email) => {
return models.User.findOne({
where: {
email: email,
},
})
},
_getUserById: async (Id) => {
return models.User.findOne({
where: {
id: Id,
},
})
},
_getActiveUserIds: async (offset = 0, limit = 10) => {
return models.User.findAndCountAll({
attributes: ['id'],
where: {
state: 'active',
phone: { [Sequelize.Op.ne]: null },
},
raw: true,
limit: limit,
offset: offset
})
},
_updateLastLoginAndVersionUser: async (id, appVersion) => {
return models.User.update ({
app_version : appVersion,
lastlogin: moment().utc()
}, {
where: { id: id }
});
},
_getOrCreateUser: async (dataUser) => {
let result = null;
if (dataUser.userResult) {
result = { user: dataUser.userResult, isCreated: false};
} else {
await models.User.findOrCreate({
where: {
phone: (dataUser.phone)? dataUser.phone : null, //puede que al venir la solicitud por web no venga el phone
email: dataUser.email,
},
include: [{ model: models.Entity }],
defaults: {
phone: dataUser.phone,
email: dataUser.email,
name: dataUser.name,
surname: dataUser.surname,
entityId: dataUser.entityId,
// password: crypto.createHash('sha512').update(user.phone).digest('hex'),
}
}).then(([user, created]) => {
user = user.toJSON();
result = {user: user, isCreated: created}});
}
return result;
},
_getOrCreateUserWEB: async (dataUser) => {
let result = null;
if (dataUser.userResult) {
result = { user: dataUser.userResult, isCreated: false };
} else {
await models.User.findOrCreate({
where: {
phone: (dataUser.phone) ? dataUser.phone : null, //puede que al venir la solicitud por web no venga el phone
email: dataUser.email,
name: dataUser.name,
surname: dataUser.surname
},
include: [{ model: models.Entity }],
defaults: {
phone: dataUser.phone,
email: dataUser.email,
name: dataUser.name,
surname: dataUser.surname,
entityId: dataUser.entityId,
// password: crypto.createHash('sha512').update(user.phone).digest('hex'),
}
}).then(([user, created]) => {
user = user.toJSON();
result = { user: user, isCreated: created }
});
}
return result;
},
};
module.exports = generateService(models.User, extraMethods);