From bef86df5d498b4c518bae57ce8c143654a2a4045 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vincze=20J=C3=B3zsef?= Date: Wed, 15 May 2024 09:03:36 +0200 Subject: [PATCH] =?UTF-8?q?QR=20k=C3=B3d=20ugr=C3=A1s=20hozz=C3=A1adva.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/androidApi.js | 2 +- models/employee.js | 4 + routes/employee.js | 302 ++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 305 insertions(+), 3 deletions(-) diff --git a/js/androidApi.js b/js/androidApi.js index 52f03c6..0517673 100644 --- a/js/androidApi.js +++ b/js/androidApi.js @@ -46,7 +46,7 @@ exports.apiRegisterDevice=function(deviceId,username,password,deviceType,callbac } else { if (rfidDevice) - callback(null,{'message':'Az eszköz már regisztrálva van!'}); + callback(null,{'message':'Az eszköz már regisztrálva van!','apiKey':employee.apiKey}); else { diff --git a/models/employee.js b/models/employee.js index 93b68ca..30868d7 100644 --- a/models/employee.js +++ b/models/employee.js @@ -15,6 +15,10 @@ let employeeSchema = mongoose.Schema({ type: String, require: true }, + qrCode:{ + type: String, + require: true + }, address:{ type: String, require: true diff --git a/routes/employee.js b/routes/employee.js index 279a0eb..fa304c9 100644 --- a/routes/employee.js +++ b/routes/employee.js @@ -511,7 +511,177 @@ transporter = nodemailer.createTransport({ } }); break; - + case 'ACCESSQR': // Bejelentezés QR kóddal + moment.locale('HU'); + var response = { + status : 200, + data : 'INVALID QUERY' + } + if (!data.CID1 | !data.CID2) + { + //console.log("Invalid Client ID!"); + createLog("INVALID CID",data);//JSON.stringify(data)); + response.status=200; + response.data='INVALID CLIENT ID'; + socket.write(JSON.stringify(response)); + break; + } + if (!data.LAT | !data.LON) + { + //console.log("Invalid Client POS!"); + createLog("INVALID LOCATION ",data);//JSON.stringify(data)); + response.status=200; + response.data='INVALID LOCATION ID'; + socket.write(JSON.stringify(response)); + break; + } + //var address=getAddress(data.LAT,data.LON); + DeviceRemote.findOne({imei:data.CID1,ccid:data.CID2}, function(err,device){ + if (err) + { + console.log("Device DB err:"+err); + } + else + { + //if (!device.length) + if (typeof device === 'undefined' || !device) + { + //console.log(ma+' Invalid device! RAW: '+JSON.stringify(data)+'\r\n'); + createLog("INVALID DEVICE",data);//JSON.stringify(data)); + socket.write(JSON.stringify({ + status: 200, + data: 'Invalid device!' + })); + } + else + { + if (!data.loc) + { + response.status=200; + response.data='INVALID LOCATION'; + socket.write(JSON.stringify(response)); + } + else + { + if (data.mode!='ARRIVAL' && data.mode!='GETAWAY' && data.mode!='FREEDOM' && data.mode!='SICKPAY') + { + response.status=200; + response.data='INVALID MODE'; + socket.write(JSON.stringify(response)); + } + else + { + //console.log(data.rfid); + Employee.findOne({'qrCode':data.qrCode},function(err,employee){ + + if(err) + { + response.status=200; + response.data='DB ERROR 1'; + socket.write(JSON.stringify(response)); + } + else + { + if (employee) + { + // Ha pozíció szöveges (fix telepítésű WiFi-nél) + //Utca név is kell; + //var addr=address.city+","+address.road+" "+address.number; + getAddress(data.LAT,data.LON,data.loc,function(err,address){ + + if (err) + { + console.log("GeoAddress Error! "+err); + // response.status=200; + // response.data='GeoErr! '; + //socket.write(JSON.stringify(response)); + // return; + // Nincs GPS!!!!!!!!!!!!!!!!!!!!!! + addr=device.assignment; + registerAccess(employee,addr,null,null,device,function(err,result){ + //registerAccess(employee,data.loc,function(err,result){ + if (err) + { + console.log(err); + socket.write(JSON.stringify(err)); + } + else + { + checkIsHoliday(employee._id,ma,function(err,cb){ + if (err) + { + console.log('Holiday Split Error: '+err); + } + else + { + socket.write(JSON.stringify(result)); + } + }) + + } + }) + } + else + { + + + var addr=address.city+","+address.road+" "+address.number; + /* if (data.loc==='G'){ + var dec=convertDeg2Dec(data.LAT,data.LON); + } + else*/ + if (data.loc==="G2"){ + var dec={'latdec':data.LAT,'londec':data.LON} + } + else + { + var dec=convertDeg2Dec(data.LAT,data.LON); + } + registerAccess(employee,addr,dec.latdec,dec.londec,device,function(err,result){ + //registerAccess(employee,data.loc,function(err,result){ + if (err) + { + console.log(err); + socket.write(JSON.stringify(err)); + } + else + { + //console.log('Access: '+JSON.stringify(result)); + createLog("ACCESS",result);//JSON.stringify(result)); + checkIsHoliday(employee._id,ma,function(err,cb){ + if (err) + { + console.log('Holiday Split Error: '+err); + } + else + { + socket.write(JSON.stringify(result)); + } + }) + + } + }) + } + }); + } + else + { + //console.log("Nincs munkavállaló ezzel az azonosítóval!"); + createLog("INVALID CODE",data.rfid);//JSON.stringify(data.rfid)); + response.status=200; + response.data='INVALID CODE'; + socket.write(JSON.stringify(response)); + } + + } + }) + + } + } + } + } + }); + break; case 'ACCESSNOGEO': // Bejelentkezés telefonról Ha a címadat már megvan moment.locale('HU'); var response = { @@ -633,7 +803,128 @@ transporter = nodemailer.createTransport({ } }); break; - case 'NTRK': + case 'ACCESSNOGEOQR': // Bejelentkezés telefonról QR kóddal Ha a címadat már megvan + moment.locale('HU'); + var response = { + status : 200, + data : 'INVALID QUERY' + } + if (!data.CID1 | !data.CID2) + { + //console.log("Invalid Client ID!"); + createLog("INVALID CID",data);//JSON.stringify(data)); + response.status=200; + response.data='INVALID CLIENT ID'; + socket.write(JSON.stringify(response)); + break; + } + if (!data.LAT | !data.LON) + { + //console.log("Invalid Client POS!"); + createLog("INVALID LOCATION",data);//JSON.stringify(data)); + response.status=200; + response.data='INVALID LOCATION ID'; + socket.write(JSON.stringify(response)); + break; + } + //var address=getAddress(data.LAT,data.LON); + DeviceRemote.find({imei:data.CID1,ccid:data.CID2}, function(err,device){ + if (err) + { + console.log("Device DB err:"+err); + } + else + { + if (!device.length) + { + // console.log('Invalid device!\r\n'); + //console.log(ma+' Invalid device! RAW: '+JSON.stringify(data)+'\r\n'); + createLog("INVALID DEVICE",data);//JSON.stringify(data)); + socket.write(JSON.stringify({ + status: 200, + data: 'Invalid device!' + })); + } + else + { + if (!data.address) + { + response.status=200; + response.data='INVALID ADDRESS'; + socket.write(JSON.stringify(response)); + } + else + { + if (data.mode!='ARRIVAL' && data.mode!='GETAWAY' && data.mode!='FREEDOM' && data.mode!='SICKPAY') + { + response.status=200; + response.data='INVALID MODE'; + socket.write(JSON.stringify(response)); + } + else + { + //console.log(data.rfid); + Employee.findOne({'qrCode':data.qrCode},function(err,employee){ + + if(err) + { + response.status=200; + response.data='DB ERROR 1'; + socket.write(JSON.stringify(response)); + } + else + { + if (employee) + { + // Ha pozíció szöveges (fix telepítésű WiFi-nél) + + + + registerAccess(employee,data.address,data.LAT,data.LON,device,function(err,result){ + //registerAccess(employee,data.loc,function(err,result){ + if (err) + { + console.log(err); + socket.write(JSON.stringify(err)); + } + else + { + //console.log('Access: '+JSON.stringify(result)); + createLog("ACCESS",result);//JSON.stringify(result)); + checkIsHoliday(employee._id,ma,function(err,cb){ + if (err) + { + console.log('Holiday Split Error: '+err); + } + else + { + socket.write(JSON.stringify(result)); + } + }) + + } + }) + + } + else + { + //console.log("Nincs munkavállaló ezzel az azonosítóval!"); + createLog("INVALID CODE",data.rfid);//JSON.stringify(data.rfid)); + response.status=200; + response.data='INVALID CODE'; + socket.write(JSON.stringify(response)); + } + + } + }) + + } + } + } + } + }); + break; + case 'NTRK': tracker.newTrack(data.id,function(err,result){ if (err) { @@ -4014,6 +4305,7 @@ router.post('/getLocationInfo',function(req,res){ function registerAccess(employee,city,lat,lon,device, callback) { console.log("ACCESS: "+employee.name+" City: "+city+" WTID: "+employee.workingtimeId); + const newQrCode = uuidAPIKey.create().uuid;//crypto.randomBytes(16).toString('hex'); // Ha van megkezdett munkaidő beolvassuk if (employee.workingtimeId) { @@ -4045,6 +4337,7 @@ function registerAccess(employee,city,lat,lon,device, callback) access.locationStop=city; access.latitudeE=lat; access.longitudeE=lon; + access.deviceId=device._id; var a = moment(wt.timeArrive, "YYYY.MM.DD. HH:mm"); var b = moment(access.timeGetaway, "YYYY.MM.DD. HH:mm"); @@ -4076,6 +4369,7 @@ function registerAccess(employee,city,lat,lon,device, callback) { sendEmailGetavayNotify(employee,city,wt.timeArrive,access.timeGetaway,convertMinsToHrsMins(access.workHours)); } + emp.qrCode=newQrCode; Employee.updateOne({_id:employee._id},emp,function(err){ if (err) { @@ -4134,6 +4428,7 @@ function registerAccess(employee,city,lat,lon,device, callback) access.timeGetaway="-"; access.deviceId=device._id; access.vehicleId=device.vehicle_id; + access.save(function(err){ if(err){ var err={'status':200,'error':'DB ERROR 5'}; @@ -4150,6 +4445,7 @@ function registerAccess(employee,city,lat,lon,device, callback) sendEmailArriveNotify(employee,city,access.timeArrive); } emp.workingtimeId=access._id; + emp.qrCode=newQrCode; Employee.updateOne({_id:employee._id},emp,function(err){ if (err) { @@ -4208,6 +4504,7 @@ function registerAccess(employee,city,lat,lon,device, callback) access.timeGetaway="-"; access.deviceId=device._id; access.vehicleId=device.vehicle_id; + if (employee.emailNotifyFlags.arriving) { sendEmailArriveNotify(employee,city,access.timeArrive); @@ -4224,6 +4521,7 @@ function registerAccess(employee,city,lat,lon,device, callback) let emp={}; emp.workingtimeId=access._id; + emp.qrCode=newQrCode; Employee.updateOne({_id:employee._id},emp,function(err){ if (err) {