var express = require('express'); var router = express.Router(); // Mongoose import let Vehicle = require('../models/vehicle'); var getDate= new Date().toISOString().replace(/T/, ' ').replace(/\..+/, ''); var prev = {lat: null, lon: null}; const { v4: uuidv4 } = require('uuid'); Date.prototype.toUnixTime = function() { return this.getTime()/1000|0 }; gps.on('data', function() { if (prev.lat !== null && prev.lon !== null) { gps.state.bearing = GPS.Heading(prev.lat, prev.lon, gps.state.lat, gps.state.lon); } prev.lat = gps.state.lat; prev.lon = gps.state.lon; }); router.get('/gettrackbyid/:deviceid', function(req,res){ Vehicle.aggregate([ //{'$match':{'newTrack_id':'029febca-e05f-4f4e-b974-55b9ffd05b11'}}, {'$match':{'device_id':req.params.deviceid}}, {'$unwind':'$tracks'}, {'$match':{'tracks.track_id':'029febca-e05f-4f4e-b974-55b9ffd05b11'}}, {'$group':{'_id':'$vehicle_id','fasz':{'$first':'$name'},'trackx':{'$push':'$tracks'}}} ], function(err,track){ if (err) { console.log("DB Error Track."+err); res.send({"DB ERROR: ":err}); } else { let coords=[]; if (track.length>0){ track[0].trackx.forEach(trk=>{ coords.push([trk.latitude,trk.longitude]) }) res.send({track:track,route:coords}); } else { res.send({track:null}); } } } ) }) // Leaflet kiszolgálás router.get('/getdevicelist', function(req,res){ Vehicle.find({},function(err,dev){ if (err) { console.log("DB Error Vehiclelist."+err); res.send({"DB ERROR: ":err}); } else { let vh=[]; dev.forEach(element=>{ vh.push({device_id:element.device_id,vehicle_id:element.vehicle_id,device_name:element.name}) }) res.send(vh); } }) }) // Eszköz kiszolgálás // Bejövő adatok rögzítése function splitLines(t) { return t.split(/\r\n|\r|\n/); } // Koordináták rögzítése deviceid alapján router.post('/pushtelemetry', function (req,res) { var response = { status : 200, data : 'null' } // gps koordináták feldolgozása // var l=splitLines(req.body.nmea); // l.forEach(nm => { // gps.update(nm); //}); console.log(req.body.nmea) // if (gps.state.fix==="3D") { /* track_id: String, timestamp: String, latitude: Number, longitude: Number, altitude: Number, speed: Number */ let track={track_id:req.body.track_id,timestamp: getDate, latitude:gps.state.lat,longitude:gps.state.lon,altitude:gps.state.alt, speed:gps.state.speed }; Vehicle.updateOne({device_id:req.body.device_id,newTrack_id:req.body.track_id},{$push:{tracks:track}},function(err,upd){ if (err) { console.log("DB Err: "+err); res.send("DB_ERR"); }else { if (upd.nModified===0) { console.log('device not Found: '+req.body.track_id); res.send({err: 'device not Found'}); } else { console.log('Track logged.'); res.send({result: 'ok'}); } } }) } /*else { res.send({result: 'gpslow'}); }*/ }); // Új útvonal router.get('/newtrack/:deviceId',function(req,res){ let trid=uuidv4(); Vehicle.updateOne({device_id:req.params.deviceId},{$set:{newTrack_id:trid}},function(err,upd){ if (err) { console.log("DB Err: "+err); res.send("DB_ERR"); }else { if (upd.nModified===0) { console.log('Device Not Found: '+trid); res.send({err: 'Not Found'}); } else { console.log('New Track: '+trid); res.send({newTrack_id: trid}); } } }) }) // Modal kiszolgálás router.post('/newdevice', function(req,res){ req.checkBody('vehicle_name','Munkavállaló megnevezése kötelező!').notEmpty(); req.checkBody('vehicle_id','Rendszám megadása kötelező!').notEmpty(); req.checkBody('device_id','Eszköz azonosító megadása kötelező!').notEmpty(); // Get errors let errors = req.validationErrors(); /* name: {type: String, require: true}, vehicle_id: {type: String, require: true}, device_id: {type: String, require: true}, service: Number, timestamp : {type: String, require: true}, newTrack_id: {type:mongoose.Schema.Types.ObjectId,default : null}, geodataStart: {type: String, default: 'unknown'}, geodataStop: {type: String, default: 'unknown'}, tracks:[ { timestamp: String, latitude: Number, longitude: Number, altitude: Number, speed: Number } ] }); */ if(errors) { res.render('sidebar', { error:errors, "jmap" : {}, lat : 47.5447583333333, lng : 21.6656666666667 }); /* res.render('sidebar', { title: 'Új eszköz', error:errors, // user:req.user, })*/ } else { let v=new Vehicle(); v.timestamp=getDate; v.vehicle_id=req.body.vehicle_id; v.device_id=req.body.device_id; v.name=req.body.vehicle_name; v.service=req.body.vehicle_service; v.save(function(err){ if (err) { console.log("Hiba az eszköz hozzáadásánál: "+err); } else { req.flash('success','Új eszköz felvéve'); res.render('sidebar', { error:errors, "jmap" : {}, lat : 47.5447583333333, lng : 21.6656666666667 }); // res.render('sidebar'); } }) } //Track tr={} // res.send(uuidv4()); //res.send(docs); }) module.exports = router;