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

164 lines
4.7 KiB
JavaScript
Raw Normal View History

2019-07-19 17:39:19 +00:00
/* global User */
2022-02-18 19:32:30 +00:00
"use strict";
2019-07-19 17:39:19 +00:00
2022-02-18 19:32:30 +00:00
const _ = require("lodash");
const moment = require("moment");
2023-06-15 10:13:07 +00:00
const { generateService, parseParamsToFindOptions } = require("../../helpers/service.helper");
2022-02-18 19:32:30 +00:00
const models = require("../../core/models");
const Sequelize = require("sequelize");
moment.locale("es");
2019-07-19 17:39:19 +00:00
const extraMethods = {
2022-02-18 19:32:30 +00:00
_getUserByEmail: async (email) => {
return models.User.findOne({
where: {
email: email,
},
});
},
2019-07-19 17:39:19 +00:00
2022-02-18 19:32:30 +00:00
_getUserById: async (Id) => {
return models.User.findOne({
where: {
id: Id,
},
});
},
2019-08-31 11:47:15 +00:00
2023-06-15 10:13:07 +00:00
_getActiveUserIds: async (offset = 0, limit = 10, country = "ES") => {
2022-02-18 19:32:30 +00:00
return models.User.findAndCountAll({
attributes: ["id"],
where: {
state: "active",
phone: { [Sequelize.Op.ne]: null },
2023-06-15 10:13:07 +00:00
country: country === "*" ? { [Sequelize.Op.ne]: null } : country,
2022-02-18 19:32:30 +00:00
},
raw: true,
limit: limit,
offset: offset,
});
},
2019-08-31 11:47:15 +00:00
2022-02-18 19:32:30 +00:00
_updateLastLoginAndVersionUser: async (id, appVersion) => {
return models.User.update(
{
app_version: appVersion,
lastlogin: moment().utc(),
},
{
where: { id: id },
}
);
},
2024-08-29 17:36:12 +00:00
//solo se llama desde APP
2022-02-18 19:32:30 +00:00
_getOrCreateUser: async (dataUser) => {
let result = null;
2024-08-29 17:36:12 +00:00
console.log('_getOrCreateUser>>>>>>><');
2022-02-18 19:32:30 +00:00
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,
profile: dataUser.profile,
// password: crypto.createHash('sha512').update(user.phone).digest('hex'),
},
}).then(([user, created]) => {
user = user.toJSON();
result = { user: user, isCreated: created };
});
}
return result;
},
2019-09-09 10:06:29 +00:00
2024-08-29 17:36:12 +00:00
//solo se llama desde formualario WEB
2022-02-18 19:32:30 +00:00
_getOrCreateUserWEB: async (dataUser) => {
2024-08-29 17:36:12 +00:00
let result = null;
console.log('_getOrCreateUserWEB>>>>>>><');
2024-08-29 16:25:15 +00:00
2024-08-29 17:36:12 +00:00
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,
profile: "guest",
// password: crypto.createHash('sha512').update(user.phone).digest('hex'),
},
}).then(([user, created]) => {
user = user.toJSON();
result = { user: user, isCreated: created };
});
}
return result;
},
2024-08-29 16:25:15 +00:00
2024-08-29 17:36:12 +00:00
//solo se llama desde formualario WEB nuevo
2024-08-30 08:18:03 +00:00
_getOrCreateUserWEBV4: async (dataUser, req) => {
2022-02-18 19:32:30 +00:00
let result = null;
2024-08-30 08:19:24 +00:00
2024-08-30 08:18:03 +00:00
//rellenamos campos nuevos de formulario web
dataUser.country = req.country? req.country : 'ES';
2019-07-20 16:11:43 +00:00
2024-08-30 08:19:24 +00:00
console.log('_getOrCreateUserWEBV4>>>>>>><', dataUser);
2022-02-18 19:32:30 +00:00
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,
2024-08-30 08:22:05 +00:00
country: dataUser.country,
2022-02-18 19:32:30 +00:00
},
include: [{ model: models.Entity }],
defaults: {
phone: dataUser.phone,
email: dataUser.email,
name: dataUser.name,
surname: dataUser.surname,
2024-08-30 08:22:05 +00:00
//entityId: dataUser.entityId,
2024-08-30 08:25:41 +00:00
type: "onsite",
2022-02-18 19:32:30 +00:00
profile: "guest",
2024-08-30 08:25:41 +00:00
country: "ES",
2022-02-18 19:32:30 +00:00
// password: crypto.createHash('sha512').update(user.phone).digest('hex'),
},
}).then(([user, created]) => {
user = user.toJSON();
2024-08-29 16:13:27 +00:00
console.log ("{ user: user, isCreated: created }>>>>> ", created, user);
2024-08-29 16:19:57 +00:00
2022-02-18 19:32:30 +00:00
result = { user: user, isCreated: created };
});
}
return result;
},
2024-08-29 17:36:12 +00:00
2019-07-19 17:39:19 +00:00
};
2022-02-18 19:32:30 +00:00
module.exports = generateService(models.User, extraMethods);