"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const express = require("express"); const logger = require("./log"); const bodyParser = require("body-parser"); const config = require("./config"); const MqttDispatcher_1 = require("./MqttDispatcher"); const events_1 = require("events"); class GeoFences extends events_1.EventEmitter { constructor() { super(); this.app = express(); this.app.use(bodyParser.urlencoded({ extended: false })); this.app.use(bodyParser.json()); this.attendanceSheet = {}; } exec() { this.app.post('/', (req, res) => { const reqData = req.body; const deviceId = reqData.device; let occupantName = 'unknown'; const location = reqData.name; if (deviceId in config.dict.occupants) { occupantName = config.dict.occupants[deviceId]; } const presence = reqData.entry == '1'; const direction = presence ? 'arrives at' : 'leaves from'; logger.info(`${deviceId} (${occupantName}) ${direction} ${location}`); logger.info(JSON.stringify(reqData)); res.send('OK'); const state = presence ? 'present' : 'absent'; MqttDispatcher_1.mqttHandler.send(`${GeoFences.geoFencesTopicPre}/${occupantName}`, state); this.attendanceSheet[occupantName] = presence; logger.info(`attendanceSheet is now ${JSON.stringify(this.attendanceSheet)}`); this.emit('change', this.attendanceSheet); }); let port = parseInt(config.dict.geofencesPort); this.server = this.app.listen(port, '', () => { logger.info(`geofences server listening on ${port}`); }); } } GeoFences.geoFencesTopicPre = "dispatcher_ng/geofences"; exports.GeoFences = GeoFences; //# sourceMappingURL=GeoFences.js.map