126 lines
3.5 KiB
JavaScript
126 lines
3.5 KiB
JavaScript
|
'use strict';
|
||
|
var logger = require('log4js').getLogger();
|
||
|
|
||
|
var Sugar = require('sugar-date');
|
||
|
|
||
|
|
||
|
|
||
|
module.exports = function(db) {
|
||
|
var module = {};
|
||
|
module.deviceIds = ['CENSIS-LoRa-1','CENSIS-LoRa-2','CENSIS-LoRa-3','CENSIS-LoRa-4','HIE-mobile-1','HIE-demo','HIE-mobile-2','HIE-smart-campus-1','HIE-smart-campus-2','HIE-smart-campus-3','HIE-smart-campus-4','HIE-smart-campus-5','HIE-smart-campus-6','HIE-smart-campus-7','HIE-mDot-1'];
|
||
|
|
||
|
module.roomIds = ['CENSIS-LoRa-1','CENSIS-LoRa-2','CENSIS-LoRa-3','CENSIS-LoRa-4'];
|
||
|
|
||
|
module.sqlGetMeetingByRoom = function(roomId,returnObj) {
|
||
|
logger.debug('mdot:sqlGetMeetingByRoom', roomId);
|
||
|
|
||
|
return new Promise(function(resolve, reject) {
|
||
|
db.any('select distinct * from meeting where locationid=$1 order by start asc;', [roomId + 1])
|
||
|
.then(function(d) {
|
||
|
returnObj.occupancy = d;
|
||
|
return resolve(returnObj);
|
||
|
})
|
||
|
.catch((err)=> {
|
||
|
logger.error(err);
|
||
|
return reject(err);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
};
|
||
|
|
||
|
module.sqlAllGetDecoded = function(deviceId) {
|
||
|
logger.debug('mdot:sqlAllGetDecoded');
|
||
|
return new Promise(function(resolve, reject) {
|
||
|
db.any('select distinct * from decoded where deviceid=$1 order by timestamp asc;', [deviceId])
|
||
|
.then(function(d) {
|
||
|
return resolve(d);
|
||
|
})
|
||
|
.catch((err)=> {
|
||
|
logger.error(err);
|
||
|
return reject(err);
|
||
|
});
|
||
|
});
|
||
|
};
|
||
|
|
||
|
module.sqlRangedGetDecoded = function(params) {
|
||
|
logger.debug('mdot:sqlRangedGetDecoded');
|
||
|
return new Promise(function(resolve, reject) {
|
||
|
db.any('select * from decoded where deviceid=$1 and timestamp between $2 and $3 order by timestamp asc;', [params.deviceID, params.startTS, params.endTS])
|
||
|
.then(function(d) {
|
||
|
return resolve(d);
|
||
|
})
|
||
|
.catch((err)=> {
|
||
|
logger.error(err);
|
||
|
return reject(err);
|
||
|
});
|
||
|
|
||
|
});
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
module.doGet = function(params) {
|
||
|
var self = this;
|
||
|
var _obj = {};
|
||
|
var room;
|
||
|
return new Promise(function(resolve, reject) {
|
||
|
logger.debug('mdot.doGet', params);
|
||
|
|
||
|
_obj.deviceID = module.deviceIds.indexOf(params.id);
|
||
|
room = _obj.deviceID;
|
||
|
|
||
|
if (params.hasOwnProperty('start') && params.hasOwnProperty('end')) {
|
||
|
|
||
|
logger.debug('params.start',params.start);
|
||
|
logger.debug('params.start',Sugar.Date.create(params.start));
|
||
|
_obj.startTS = Sugar.Date.create(params.start);
|
||
|
_obj.endTS = Sugar.Date.create(params.end);
|
||
|
|
||
|
logger.info(_obj);
|
||
|
|
||
|
self.sqlRangedGetDecoded(_obj)
|
||
|
.then(function(d) {
|
||
|
|
||
|
self.sqlGetMeetingByRoom(room)
|
||
|
.then(function() {
|
||
|
// nothing done
|
||
|
})
|
||
|
.catch(function(e) {
|
||
|
logger.error(e);
|
||
|
reject(e);
|
||
|
});
|
||
|
|
||
|
resolve(d);
|
||
|
})
|
||
|
.catch(function(e) {
|
||
|
logger.error(e);
|
||
|
reject(e);
|
||
|
});
|
||
|
|
||
|
} else {
|
||
|
|
||
|
self.sqlAllGetDecoded(_obj.deviceID)
|
||
|
.then(function(d) {
|
||
|
var obj = {data: d};
|
||
|
return self.sqlGetMeetingByRoom(room,obj);
|
||
|
})
|
||
|
.then(function(combined) {
|
||
|
resolve(combined);
|
||
|
})
|
||
|
.catch(function(e) {
|
||
|
logger.error(e);
|
||
|
reject(e);
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
});
|
||
|
};
|
||
|
|
||
|
|
||
|
return module;
|
||
|
};
|
||
|
|