91 lines
2.8 KiB
JavaScript
91 lines
2.8 KiB
JavaScript
const Promise = require('bluebird');
|
|
const Uuid = require('uuid');
|
|
const moment = require('moment');
|
|
module.exports = {
|
|
/**
|
|
* Método que realiza la creación o actualización de los registros monitor,
|
|
* cuando un usuario visita un determinado documento
|
|
* @param {Modelos} pModelo Modelos de la base de datos.
|
|
* @param {Objeto} pLog Objeto con información sobre la visita en curso.
|
|
* @return {Promesa}
|
|
*/
|
|
registrarVisita:(pModelo, pLog) => {
|
|
// Agrega a la informacion de visita la fecha actual.
|
|
pLog.fecha_visita = moment().tz("America/La_Paz").format("YYYY-MM-DD");
|
|
|
|
// Almacena un clon del vector ip.
|
|
const ip = pLog.ip;
|
|
|
|
// Agrega a la informacion de visita el vector de ip's en modo texto.
|
|
pLog.ip = JSON.stringify(pLog.ip);
|
|
|
|
// Instancia el modelo monitor, responsable de registrar visitas.
|
|
const Monitor = pModelo.monitor;
|
|
|
|
// Instancia un nuevo objeto.
|
|
const datos={};
|
|
|
|
// Instancia una nueva promesa.
|
|
return new Promise((resolve, reject) => {
|
|
|
|
// Realiza la busqueda, con relacion a la visita actual.
|
|
Monitor.findOne({
|
|
where:{
|
|
fid_usuario:pLog.fid_usuario,
|
|
fid_documento:pLog.fid_documento,
|
|
},
|
|
})
|
|
.then(pMon => {
|
|
// Si se encuentra registrada la visita.
|
|
if(pMon){
|
|
|
|
// Transforma las ip regitrada en modo texto a vector.
|
|
const ips= JSON.parse(pMon.ip);
|
|
|
|
let c=0;
|
|
|
|
// Itera las IP's obtenidas en la visita actual.
|
|
for(let i=0; i<ip.length;i++){
|
|
// Verifica si una de las ip actual ya estaba registrada.
|
|
if(ips.indexOf(pLog[i])){ c++; }
|
|
}
|
|
|
|
if(moment(pMon.fecha_visita).format("YYYY-MM-DD")==pLog.fecha_visita && c>0){
|
|
// Actualiza la información de la visita.
|
|
pLog._usuario_modificacion=pLog.fid_usuario;
|
|
pLog.contador=pMon.dataValues.contador+1;
|
|
|
|
// Actualiza la información de la visita
|
|
return pMon.update(pLog).then(() => resolve());
|
|
}else {
|
|
|
|
// Actualiza la información de la visita a registrar.
|
|
pLog.contador=1;
|
|
pLog._usuario_creacion=pLog.fid_usuario;
|
|
|
|
// Registra la visita.
|
|
return Monitor.create(pLog).then(() => resolve());
|
|
|
|
}
|
|
|
|
}
|
|
// Si no se encuentra registrada la visita.
|
|
else{
|
|
|
|
// Actualiza la información de la visita a registrar.
|
|
pLog.contador=1;
|
|
pLog._usuario_creacion=pLog.fid_usuario;
|
|
// pLog['fecha_visita']= moment().tz("America/La_Paz").format("YYYY-MM-DD");
|
|
|
|
// Registra la visita.
|
|
return Monitor.create(pLog).then(() => resolve())
|
|
}
|
|
})
|
|
.catch(pError => {
|
|
console.log("Error al crear el registro del monitor", pError);
|
|
resolve()
|
|
})
|
|
})
|
|
},
|
|
};
|