Skip to content

Commit

Permalink
Fix: La busqueda del agente del parte ahora se realiza en mongodb uti…
Browse files Browse the repository at this point in the history
…lizando el id asignado en el viejo sistema. Fix: Al guardar el parte la fecha del mismo sea fuerza a la 00:00 hs.
  • Loading branch information
dnievas04 committed Aug 15, 2020
1 parent def5631 commit 5dbd967
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 12 deletions.
1 change: 1 addition & 0 deletions db.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ const sqlConfig = {
parseJSON: true,
requestTimeout:60000,
connectionTimeout:60000,
encrypt: false,
pool: {
max: 10,
min: 0,
Expand Down
25 changes: 15 additions & 10 deletions poll.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class SyncDataException extends Error {};
* @param sqlPool
*/
async function syncFichadas(sqlPool){
logger.debug("Inicio sincronizador.")
let fichada;
let agente;
while (true){ // Infinite loop
Expand Down Expand Up @@ -56,7 +57,7 @@ async function nextFichadaFromSQLServer(mssqlPool){
inserted.fecha,
inserted.esEntrada,
inserted.reloj
WHERE syncTries <3 AND syncError is NULL`;
WHERE syncTries <3`;
if (result.recordset && result.recordset.length){
let fichada = result.recordset[0];
logger.debug("Fichada from SQLServer:" + JSON.stringify(fichada));
Expand Down Expand Up @@ -100,21 +101,24 @@ async function saveFichadaToMongo(fichada, agente){
async function findAgenteFichada(mssqlPool, fichada){
let agente;
if (!fichada.idAgente) throw new SyncDataException(`La fichada no presenta ID de Agente. FichadaID=${fichada.id}`);
if (mongoose.isValidObjectId(fichada.idAgente)){
agente = await schemas.Agente.findOne(
{ _id: mongoose.Types.ObjectId(fichada.idAgente)},
{ _id: 1, nombre: 1, apellido: 1}).lean();
}
else{
agente = await schemas.Agente.findOne(
{ idLegacy: fichada.idAgente },
{ _id: 1, nombre: 1, apellido: 1}).lean();
if (!agente){
// Si el idAgente no es un id valido para mongo, entonces puede
// tratarse de un dato con el id de agente del viejo sistema.
// tratarse de un dato con el id de agente del viejo sistema.
// Esta condicion es solo temporal hasta que se decida la baja
// del viejo sistema
agente = await findAgenteFromSQLServer(mssqlPool, fichada);
if (!agente || !agente.Numero) throw new SyncDataException(`La fichada no presenta un ID ni Nro de Agente válido. FichadaID=${fichada.id}`);
// En este caso intentamos una busqueda por el numero de agente
agente = await schemas.Agente.findOne(
{ numero: agente.Numero },
{ _id: 1, nombre: 1, apellido: 1}).lean();
}

logger.debug("Agente que ficho:" + JSON.stringify(agente));
return agente;
}
Expand All @@ -133,6 +137,7 @@ async function findAgenteFromSQLServer(mssqlPool, fichada){

async function actualizaFichadaIO(nuevaFichada) {
let fichadaIO;
const fechaFichada = utils.parseDate(nuevaFichada.fecha);
if (nuevaFichada.esEntrada){
// Obs: Existen casos limites en los cuales por error (generalmente)
// el agente ficha en el mismo dia el ingreso y egreso como entrada
Expand All @@ -143,7 +148,7 @@ async function actualizaFichadaIO(nuevaFichada) {
// jefes de servicio pueden visualizar estas inconsistencias.
fichadaIO = new schemas.FichadaCache({
agente: nuevaFichada.agente,
fecha: utils.parseDate(nuevaFichada.fecha),
fecha: fechaFichada,
entrada: nuevaFichada.fecha,
salida: null
})
Expand All @@ -163,7 +168,7 @@ async function actualizaFichadaIO(nuevaFichada) {
if (correspondeNuevaFichadaIO){
fichadaIO = new schemas.FichadaCache({
agente: nuevaFichada.agente,
fecha: utils.parseDate(nuevaFichada.fecha),
fecha: fechaFichada,
entrada: null,
salida: nuevaFichada.fecha
})
Expand Down
5 changes: 4 additions & 1 deletion schemas.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ var FichadaSchema = new mongoose.Schema({
type: mongoose.Types.ObjectId,
required: true,
index: true
}
},
nombre: String,
apellido: String

},
fecha:{
type: Date,
Expand Down
2 changes: 1 addition & 1 deletion utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ function diffHours(date1, date2){
}

function parseDate(date){
return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());
return new Date(Date.UTC(date.getUTCFullYear(),date.getUTCMonth(),date.getUTCDate(),0, 0, 0));
}

const timeout = ms => new Promise(res => setTimeout(res, ms));
Expand Down

0 comments on commit 5dbd967

Please sign in to comment.