229 lines
5.7 KiB
JavaScript
229 lines
5.7 KiB
JavaScript
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; |