/* 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, }, }) }, _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);